最容易出現亂碼的場景是瀏覽器向服務器發送請求的過程,解決的策略就是強制爲請求和響應設置編碼格式。web
1. 在每一個 Controller 中單獨處理spring
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
2. 在 web.xml 中添加編碼過濾器瀏覽器
<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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
因爲 GET 請求的參數是經過 URL 來傳遞的,因此 POST 設置的編碼格式是不起做用的。tomcat
比較簡單的的方法,就是在應用容器中配置 URL 編碼格式。服務器
修改 tomcat 的配置文件 server.xmlapp
<Connector URIEncoding="UTF-8" port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" connectionTimeout="20000" disableUploadTimeout="true" />
在 Connector 標籤中添加 編碼
URIEncoding="UTF-8"
。url