表單數據提交后的中文亂碼解決方案


在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。

 

 

對照以上五點亂碼就能解決了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM