1. 程式人生 > >JSP頁面上的中文資料傳到後臺亂碼處理彙總

JSP頁面上的中文資料傳到後臺亂碼處理彙總

SpringMVC框架下的web專案,JSP頁面上的中文傳到後臺亂碼的情況下,這兒彙總了五種可能出現亂碼解決的情況,如果你的專案中也出現了亂碼,可以嘗試從以下方面進行解決(使用UTF-8的編碼方式)。 1、web.xml中配置編碼過濾器
<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>
2、JS頁面上設定pageEncoding
<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":
$.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() {}
});
4、使用tomcat伺服器的情況下,上面幾點都設定好了還是亂碼就去檢視tomcat配置檔案web.xml(路徑:tomcat/conf/web.xml),設定tomcat的編碼過濾器為UTF-8,配置位置如下:
  <!-- 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>
5、tomecat伺服器的配置檔案中,設定編碼過濾器前面有一行註釋,parameters in a POST request,從我遇到的實際情況來看確實是這樣的,這個過濾器只對post方式傳送的請求中的資料有效,而對get請求中的引數是無效的。 get請求方式傳送的中文資料(url拼接)在前面都設定好後還會亂碼的話,進入tomcat的配置檔案server.xml(路徑:tomcat/conf/server.xml),給
<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"/> 

      目前我所遇到的亂碼情況用這幾種方式都能解決,如果還有其他情況歡迎告知補充。