在web項目運行時,通常會遇到中文亂碼問題。那么對於表單提交后數據是亂碼的問題有以下幾點需注意:
1、過濾器 的配置在web.xml中
<!-- post亂碼過慮器 --> <filter> <filter-name>CharacterEncodingFilter</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> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2、數據庫連接配置:
connection.url=jdbc\:mysql\://localhost:3306/test?characterEncoding\=UTF-8
3、jsp或html頁面的編碼 charset="UTF-8"
4、數據庫、表以及表中的相應字段統一設置成
5、tomcat 中server.xml中在connector加上 URIEncoding="UTF-8"即可。
原因:
在頁面上提交數據到服務器有兩種方式“GET”和“POST”,當使用“GET”時,傳輸的數據是直接拼接在URL后面的。當數據中含有對HTML來說不安全的字符例如中文時,就會被編碼,一般采用的是UTF-8編碼。這時URL已經被轉義成相對安全的字符串。此時再經過ios-8859-1的編碼方式轉換成二進制的形式跟隨請求頭一起發送到服務器端。 到達服務器端時,服務器也對數據進行兩次解碼,服務器先把數據經過ios-8859-1解碼,然后根據服務器默認的編碼進行第二次解碼。在tomcat中,默認的編碼是ios-8859-1,所以第二次解碼用的是ios-8859-1而不是UTF-8,到此,服務器端收到的數據就是亂碼了。 解決的方法是修改tomcat的默認編碼為UTF-8。
對照以上五點亂碼就能解決了!