JSP頁面上的中文資料傳到後臺亂碼處理彙總
阿新 • • 發佈:2019-01-02
SpringMVC框架下的web專案,JSP頁面上的中文傳到後臺亂碼的情況下,這兒彙總了五種可能出現亂碼解決的情況,如果你的專案中也出現了亂碼,可以嘗試從以下方面進行解決(使用UTF-8的編碼方式)。
1、web.xml中配置編碼過濾器
目前我所遇到的亂碼情況用這幾種方式都能解決,如果還有其他情況歡迎告知補充。
2、JS頁面上設定pageEncoding<filter> <filter-name>SetCharacterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<a target=_blank href="mailto:%@page language='java' import='java.util.*' pageEncoding='UTF-8'%">%@page language="java" import="java.util.*" pageEncoding="UTF-8"%</a>
3、如果使用的是Ajax進行資料傳輸出現亂碼,對Ajax傳輸的資料設定編碼contentType:"application/x-www-form-urlencoded; charset=utf-8":
4、使用tomcat伺服器的情況下,上面幾點都設定好了還是亂碼就去檢視tomcat配置檔案web.xml(路徑:tomcat/conf/web.xml),設定tomcat的編碼過濾器為UTF-8,配置位置如下:$.ajax({ url : url, type : "POST", dataType : "json", async : false, contentType:"application/x-www-form-urlencoded; charset=utf-8", data : $("#communication_frm").serialize(), success : function(result) {}, error : function() {} });
5、tomecat伺服器的配置檔案中,設定編碼過濾器前面有一行註釋,parameters in a POST request,從我遇到的實際情況來看確實是這樣的,這個過濾器只對post方式傳送的請求中的資料有效,而對get請求中的引數是無效的。 get請求方式傳送的中文資料(url拼接)在前面都設定好後還會亂碼的話,進入tomcat的配置檔案server.xml(路徑:tomcat/conf/server.xml),給<!-- A filter that sets character encoding that is used to decode --> <!-- parameters in a POST request --> <filter> <filter-name>setCharacterEncodingFilter</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
<Connector executor="tomcatThreadPool"
port="1522"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
新增URI的編碼屬性:URIEncoding="UTF-8"即改為:
<Connector executor="tomcatThreadPool"
port="1522"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
目前我所遇到的亂碼情況用這幾種方式都能解決,如果還有其他情況歡迎告知補充。