上海校區 海哥解惑 常見中文亂碼問題解決方式

2021-08-06 05:43:51 字數 2198 閱讀 2999

伺服器響應到客戶端中文亂碼的解決方式

當伺服器向瀏覽器傳送響應頁面時,有時候因為碼表的查詢不一致,會在瀏覽器出現亂碼問題。比如說伺服器中我使用的是utf-8

,而瀏覽器預設是查詢本地碼表,注意如果是中文系統則使用的是gbk碼表

。造成了碼表查詢不一致,會出現亂碼的情況。服務端發出的響應,有位元組流和字元流兩種方式向瀏覽器傳送頁面資訊。關於瀏覽器出現亂碼問題見下圖:

解決位元組流或者字元流的亂碼問題,可以通過http

響應頭,或者是在html

頁中的標籤中等想客戶端傳送訊息,讓客戶端以什麼方式解碼。以下是分別在servlet

類中對位元組流或者是字元流進行中文亂碼處理。

位元組流

對於位元組流中,out.write(「

中文」.getbyte(「utf-8」)),

在瀏覽器中會出現亂碼問題。

1.     第一種解決方式:使用者更改瀏覽器的解碼方式。此種方式不可取。

2.     通過httpservletresponse物件,模擬http協議的響應訊息頭來通知瀏覽器使用什麼碼表來進行查詢解碼。

a)      通過response.setheader("content-type","text/html;charset=utf-8");來通知瀏覽器解碼方式。

b)      模擬html頁面的標籤:如下示例**:

string meta="";

resp.getoutputstream().write(meta.getbytes());

c)       response.setcontenttype("text/html;charset=utf-8")的方式來通知瀏覽器的解碼方式。

字元流

注意了,在servlet

規範中要求,當使用字元流向瀏覽器傳送頁面資訊時,預設查詢的是iso-8859-1碼表。

對於如下**傳送中文時有幾種解決方式:

printwriter out=resp.getwriter();

out.print("中文

");//

預設以iso-8859-1

編碼。

a)     可以直接設定resp.setcharacterencoding("gbk");以gbk方式編碼

b)    當設定resp.setcharacterencoding("utf-8")編碼輸出時,可以使用位元組流的通知客戶端以utf-8解碼顯示幾種方式解決。

i.           response.setheader("content-type","text/html;charset=utf-8");

ii.           response.setcontenttype("text/html;charset=utf-8");

客戶端請求伺服器出現的中文亂碼解決方式

當瀏覽器在表單填寫中文引數時,發回到伺服器收到的引數資訊是亂碼,這樣在封裝引數資訊時,會出現錯誤。那麼怎麼解決中文的請求引數亂碼問題呢?由於表單提交有兩種方式,(get和post)。所以在處理中文的亂碼問題也有所不同。

post方式

1.     瀏覽器當前使用什麼編碼,表單提交的引數就是什麼編碼。這裡伺服器可以有多種方式去通知瀏覽器的編碼方式。html中的meta標籤可以這樣做。示例**如下:

。但是這樣並不能解決問題,需要通知程式,客戶端提交的資料使用的編碼。需要在接受引數的servlet類中新增這段**:request.setcharacterencoding("utf-8");

如果向客戶端發出響應可能還需要新增如下**才能在結果頁面出現中文:

response.setcharacterencoding("utf-8");

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

get方式

如果是get

請求提交資料,編碼採用的iso-8859-1

。就不能使用上述的解決辦法。這時需要在伺服器端的servlet

類中先將其以iso-8859-1

進行解碼,再使用utf-8

進行編碼。示例**如下:

string name=request.getparameter("name");

name=new string(name.getbytes("iso-8859-1"),"utf-8");

JSF spring中文輸入亂碼問題解決方法

在inputtext中輸入中文,然後在輸出,顯示為亂碼。解決方法 我是使用的jsf spring2.0 hibernate3所以解決這個問題不是很複雜.在頁面上新增 xml page contenttype text html charset utf 8 主要是在工程web.xml中新增了sprin...

Linux Oracle 中文亂碼問題解決

一 若在oracle中有漢字,在資料庫中查詢出現亂碼很可能是由於資料庫客戶端與伺服器的字符集不一致導致的,這時就應該先分別檢視下資料庫伺服器和客戶端的字符集 具體命令如下 1.檢視伺服器端的字符集 sql select userenv language from dual 2.檢視客戶端的字符集 e...

putty中文亂碼問題解決

putty中文亂碼問題解決 用putty從windows xp連線ubuntu server或者freebsd系統,其中中文部分亂碼,經常遇到這個問題的時候,會覺得很鬱悶。現共享一些解決這個問題的方法。方法一 如果經常使用,把這些設定儲存在session裡面.儲存方法 再做完以上操作的同時選中以下兩...