在作ssh搭建的框架中,在後臺條件查詢的時候,組合查詢傳到後臺的值一直是亂碼,其中在form表單中必需要加上method,這一點是確定的,可是加上了提交的方式以後,會出現以下問題: 若是使用get方法提交,在後臺獲取值的時候必須使用new String(className.getBytes("ISO8859-1"),"UTF-8")來進行轉碼才能夠不亂碼 若是使用post方式提交,在後臺不亂碼,前提是在web.xml已經配置了編碼過濾器,而且在頁面中也配置了相應的編碼格式 出現上述的緣由是由於Tomcat對get和post兩種提交方式的處理方法不同形成的。自從Tomcat5.x開始,GET和POST方法提交的信息,Tomcat採用了不一樣的方式來處理編碼,對於POST請求,Tomcat會仍然使用request.setCharacterEncoding方法所設置的編碼來處理,若是未設置,則使用默認的iso-8859-1編碼。而GET請求則不一樣,Tomcat對於GET請求並不會考慮使用request.setCharacterEncoding方法設置的編碼,而會永遠使用iso-8859-1編碼 因此解決的辦法有: 若是是get和post方法中的參數在後臺都要使用,而且用到的是一個地方,那麼轉碼的方式確定是不行的,那麼須要在tomcat下的server.xml中加上URIEncoding="UTF-8",即加在 <Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 若是不是第一種狀況 那麼用轉碼的方式就能夠 new String(className.getBytes("ISO8859-1"),"UTF-8") 須要說明的是,須要設置過濾器和jsp中的編碼,其中 <filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 至關因而 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); 在頁面中也須要設置 <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>