背景: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文件中的如下代碼
加入URLEncoding="utf-8"
將url的編碼設置爲utf-8
2、加入useBodyEncodingForURI="trur"
與前面的保持一致。如果頁面是gbk那麼他就是gbk。
在tomcat5.x之後,get和post的編碼格式分開了,這個適用於get請求,post請求可以用過濾器來實現。