response request亂碼問題

2021-09-12 02:38:17 字數 2092 閱讀 2368

1.1response的響應體設定文字

printwriter getwriter()

獲得字元流,通過字元流的write(string s)方法可以將字串設定到response 緩衝區中,隨後tomcat會將response緩衝區中的內容組裝成http響應返回給瀏覽 器端。

1.2關於設定中文的亂碼問題

原因:response緩衝區的預設編碼是iso8859-1,此碼表中沒有中文,可以通過 response的 setcharacterencoding(string charset) 設定response的編碼

但我們發現客戶端還是不能正常顯示文字

原因:我們將response緩衝區的編碼設定成utf-8,但瀏覽器的預設編碼是本地系 統的編碼,因為我們都是中文系統,所以客戶端瀏覽器的預設編碼是gbk,我們可以 手動修改瀏覽器的編碼是utf-8。

我們還可以在**中指定瀏覽器解析頁面的編碼方式,

通過response的setcontenttype(string type)方法指定頁面解析時的編碼是utf-8

response.setcontenttype(「text/html;charset=utf-8」);

上面的**不僅可以指定瀏覽器解析頁面時的編碼,同時也內含 setcharacterencoding的功能,所以在實際開發中只要編寫 response.setcontenttype(「text/html;charset=utf-8」);就可以解決頁面輸出中文亂碼問題。

2.1解決request中文亂碼的問題

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

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

二, response.setcharacterencoding(charset);必須寫在printwriter out =request.getwriter()之前,

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

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

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

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

2)對於get請求,"輸出環節"沒有問題,但是"獲取引數環節"依然出現中文亂碼,所以在輸出時直接將亂碼輸出了。

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

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

get方式引數存放在請求資料報的請求行的uri欄位中,以?開始以param=value¶me2=value2的形式附加在uri欄位之後。

而request.setcharacterencoding(charset);只對訊息體中的資料起作用,對於uri欄位中的引數不起作用。

當使用request.setcharacterencoding(charset);時,只能解決表單方法為post的中文亂碼情況,而方法為get的依然為亂碼。

解決get亂碼:

string str=new string(request.getparameter(「變數名」).getbytes(「iso8859-1」),「utf-8」);

解決post提交方式的亂碼:

request.setcharacterencoding("utf-8");

解決get提交的方式的亂碼:

webView loadData 中文亂碼問題

使用 loaddata方法是中文部分會出現亂碼,即使指定 utf 8 gbk gb2312 也一樣。webview.getsettings setdefaulttextencodingname utf 8 設定預設為utf 8 text html utf 8 api提供的標準用法,無法解決亂碼問題 ...

mysql jsp servlet 中文亂碼問題。

google一下。你可以找一大堆解決方案。但是我覺得都沒有從根本上解決問題。是不是?我覺得要想根本解決。最主要的方法是統一編碼方案。說出來很簡單。原因也很簡單。但你真的做到了嗎。首先不論你寫的是jsp servlet html 等都必須顯示標明contenttype為utf 8 強烈推薦是utf 8...

Ext HtmlEditor 提交失敗 亂碼問題

用formpanel提交htmleditor裡面的內容。發現 如果只是單純的寫字串。不用enter回車。資料可以提交到資料庫。但是如果對寫入的字串進行處理。例如,對文字進入更換顏色,加粗,或是使用enter進行換行。這樣的話。資料將傳不到伺服器。解決 我用的是aspx,只要在aspx頁面加上 val...