解決request中文亂碼的問題

2021-08-31 21:54:52 字數 940 閱讀 6925

解決request中文亂碼的問題

request.setcharacterencoding(charset);必須寫在第一次使用request.getparameter

()之前,

這樣才能保證引數是按照已經設定的字元編碼來獲取。

response.setcharacterencoding(charset);必須寫在printwriter out =

request.getwriter()之前,

這樣才能保證out按照已經設定的字元編碼來進行字元輸出。

通過過濾器,我們可以保證在servlet或jsp執行之前就設定好了請求和響應的字元編碼 。

但是這樣並不能完全解決中文亂碼問題:

對於post請求,無論是「獲取引數環節」還是「輸出環節"都是沒問題的;

對於get請求,"輸出環節"沒有問題,但是"獲取引數環節"依然出現中文亂碼,所以在輸

出時直接將亂碼輸出了。

原因是post請求和get請求存放引數位置是不同的:

post方式引數存放在請求資料報的訊息體中。get方式引數存放在請求資料報的請求行的

uri欄位中,

以?開始以param=value¶me2=value2的形式附加在uri欄位之後。而

request.setcharacterencoding(charset);

只對訊息體中的資料起作用,對於uri欄位中的引數不起作用。

當使用request.setcharacterencoding(charset);時,只能解決表單方法為post的中文

亂碼情況,而方法為get的依然為亂碼。

解決get亂碼:

string str =request.getparameter("url後面的變數名"); byte b =str.getbytes("iso-8859-1"); str = newstring(b);

解決request中文亂碼的問題

解決request中文亂碼的問題 request.setcharacterencoding charset 必須寫在第一次使用request.getparameter 之前,這樣才能保證引數是按照已經設定的字元編碼來獲取。response.setcharacterencoding charset 必...

request 中文亂碼解決方法

post請求 request.setcharacterencoding utf 8 get和post請求 頁面 utf 8tomcat iso8859 1解決思路 頁面 utf 8編碼 tomcat iso8859 1解碼 先iso8859 1編碼,再用utf 8解碼 string str requ...

解決mssql for linux 中文亂碼問題

什麼叫一波未平一波又起,這就是,好不容易安裝完成了,在用的時候居然出現了亂碼,很是頭疼,但還是解決了這個蛋疼的問題,在windows中使用mssql這麼久,從來沒出現過中文亂碼的情況,具體原因是出現在sql server的安裝配置上,預設安裝時,系統預設的排序規則時拉丁文的排序規則,在安裝過程中從來...