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)均不能解決問題,還是參照我之前說的通用性解決方案。