SpringMVC關於請求參數亂碼問題


String names =request.getParameter("name")

request主要接收的參數是form提交

form提交有的時候會伴隨着亂碼,該亂碼的格式為ISO8859-1,主要針對中文,非中文一般是不會出現編碼格式為ISO8859-1問題。


解決辦法(這是普遍有效的直接解決問題方式,但是不能從根本上解決問題):
String name = new String(names.getByte("ISO8859-1"),"UTF-8")
或request.setCharacterEncoding("utf-8");

根本解決問題的方式,在於找出問題的根源:

(1)如果是POST亂碼:

則可以通過在web.xml配置如下內容解決:

    <filter>
        <filter-name>CharacterEncoding</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>CharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

上述這段代碼,對於Java初學SpringMVC的朋友們再熟悉不過了。

 

(2)如果是GET請求亂碼:

進入tomcat中的config目錄找到server.xml文件,在Connector標簽中新增useBodyEncodingForURI="true",即可解決問題。

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

 

(3)通常(1)(2)問題對於的解決方案都可以有效解決問題,如果還是亂碼,請檢查你頁面(jsp或者html等頁面編碼格式。一般情況下,對於熟練的開發者而言,無論是jsp還是html或者是其他視圖文件,頁面編碼格式均設置為utf-8。

 

如果(1)(2)(3)均不能解決問題,還是參照我之前說的通用性解決方案。


免責聲明!

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



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