Tomcat請求url亂碼

背景:request.getParameter()總得到中文亂碼

 

分析:tomcat默認用的字符編碼是iso- 8859-1,而jsp頁面用的編碼是utf-8。所以jsp頁面的中文字符是以utf-8的編碼模式被轉化成字節流的,但是到了後臺確實通過iso-8859-1編碼被還原的,所以亂碼產生了。情形如下:

jsp頁面:byte[] a=key.getBytes("utf-8");

controller:String b=new String(a,"iso-8859-1");

這樣request.getParameter();獲得的b就是亂碼了。

 

解決:

1、找到\apache-tomcat-6.0.26\conf\server.xml文件中的如下代碼

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="utf-8"/>

 

加入URLEncoding="utf-8"

將url的編碼設置爲utf-8

2、加入useBodyEncodingForURI="trur"

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

 

與前面的保持一致。如果頁面是gbk那麼他就是gbk。

在tomcat5.x之後,get和post的編碼格式分開了,這個適用於get請求,post請求可以用過濾器來實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章