Springmvc中文亂碼解決辦法
JAVAEE的Servlet框架是Web應用中充當中央控制器的角色,採用HTTP協議的請求響應機制實現前端與後臺的資料傳輸和交換,出於網路頻寬和安全方面的考慮這些需要傳輸的資料不是以明文文字的格式進行傳輸的,需要一定的編碼格式進行處理——這就促使MIME型別資料的誕生,實現這種型別的演算法叫URLEncoding。
JAVAWeb伺服器都實現了URLEncoding演算法。無論GET還是POST請求都使用這一演算法實現對傳輸資料進行編碼。可令人深惡的是,除了英文字母和數字,Web伺服器都能自動編碼和解碼外,其餘的的一律由使用者自行處理。所以做web應用開發的中國人處理應用的亂碼是必不可少的一門技能
A.先查明伺服器字符集。tomcat預設使用的字符集是“ISO8859-1”而Weblogic預設是“UTF-8”,所以需要注意跨伺服器的程式碼。
B. 伺服器的編碼解碼機制。編碼:伺服器在處理客戶端的JSP中請求時就先以預設的字符集將請求資料進行編碼,然後才將編碼後的資料再進行URLencoding;解碼:資料傳輸到後臺應用處理程式時,就進行了一次URLdecoder,所以留給後臺處理程式的資料是經過應用伺服器編碼過的資料,這裡需要程式設計師進行處理。
C. 無論請求還是轉發(forward),伺服器都要進行一次編碼
1.通過CharacterEncodingFilter來解決post亂碼
<!-- post亂碼處理器 -->
<filter>
<filter-name>sEncodingFilter</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>sEncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
2.通過修改tomcat配置檔案來解決get亂碼
tomacat對GET和POST請求處理方式是不同的,要處理針對GET請求的編碼問題,則需要改tomcat的server.xml配置檔案,如下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
改為:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
最關鍵的點在這裡:如果你是更改的tomcat安裝目錄的server.xml配置檔案,那麼在用eclipse執行專案時會發現配置沒起作用,其實是因為eclipse在執行專案時是用的eclipse中配置的tomcat,那麼問題就好解決了,開啟eclipse中的tomcat配置檔案,改為如下即可:
注:配置useBodyEncodingForURI="true"後,可以解決普通get請求的中文亂碼問題,但是對於通過ajax發起的get請求中文依然會亂碼,請把useBodyEncodingForURI="true"改為URIEncoding="UTF-8"即可。
3.也可以通過自己寫程式碼的方式進行get亂碼解決
@RequestMapping("/sing")
public String garbled(String name) throws UnsupportedEncodingException{
System.out.println(new String(name.getBytes("ISO8859-1"),"UTF-8"));
return "/WEB-INF/jsp/index.jsp";
}
相關文章
- centos 中文亂碼解決辦法2CentOS
- datastage抽取工程中文亂碼解決辦法AST
- ubuntu中文顯示亂碼解決辦法Ubuntu
- springmvc 解決中文亂碼問題SpringMVC
- SpringMvc解決Restful中文亂碼問題SpringMVCREST
- LoadRunner中文出現亂碼的解決辦法
- html裡顯示中文亂碼的解決辦法HTML
- 常見php與mysql中文亂碼問題解決辦法PHPMySql
- PL/SQL Developer-中文註釋亂碼的解決辦法SQLDeveloper
- Zuul上傳檔案,中文檔名亂碼解決辦法Zuul
- Redis中文顯示為Unicode編碼 亂碼的解決辦法RedisUnicode
- linux使用vim(vi)中文亂碼的終極解決辦法Linux
- jetty,tomcat URI傳中文引數亂碼的解決辦法JettyTomcat
- flashfxp 亂碼,2種辦法解決flashfxp 亂碼問題
- IE瀏覽器下POST中文亂碼解決辦法 - PHP實現瀏覽器PHP
- RHEL中文亂碼解決
- HttpClient 解決中文亂碼HTTPclient
- MySQL解決中文亂碼MySql
- Linux--SSH 檢視應用日誌中文亂碼解決辦法Linux應用日誌
- SpringMVC中文亂碼踩坑SpringMVC
- SpringMVC中文亂碼問題SpringMVC
- php json提交亂碼的解決辦法PHPJSON
- 解決 Jmeter Dashboard Report HTML 測試報告中文亂碼 至簡辦法JMeterHTML測試報告
- cocos2d-x解決中文亂碼問題的幾種辦法
- request/response解決中文亂碼
- eclipse中文亂碼解決Eclipse
- myeclipse解決中文亂碼Eclipse
- 解決Linux中文亂碼Linux
- ROS中解決中文亂碼ROS
- 解決中文亂碼問題
- 管理工具匯入CSV檔案,中文資料亂碼的解決辦法。
- MySql中文亂碼問題解決MySql
- Jmeter 解決中文亂碼問題JMeter
- 解決 SecureCRT 和 SecureFX 中文亂碼Securecrt
- Java 解決中文亂碼問題Java
- RDSSQLSERVER解決中文亂碼問題SQLServer
- Windows下Clion中文亂碼解決Windows
- 徹底解決Oracle中文亂碼Oracle