Ajax解決中文亂碼問題

技術 達人科技 2017-03-31

Ajax不支持多種字符集,它默認的字符集是UTF-8,所以在應用Ajax技術的程序中應及時進行編碼轉換,否則對於程序中出現的中文字符將變成亂碼。

一般情況下,有以下兩種情況可以產生中文亂碼。

一、發送請求時出現中文亂碼

將數據提交到服務器有兩種方法,一種是使用GET方法提交;另一種是使用POST方法提交。

使用不同的方法提交數據,在服務器端接收參數時解決中文亂碼的方法是不同的。

具體解決方法如下。

1、當接收使用GET方法提交的數據時,要將編碼轉換為GBK、GB2312或是GB18030。

例如,將省份名稱的編碼轉換為GBK的代碼如下:

String selProvince=request.getParameter("parProvince"); //獲取選擇的省份

selProvince=new String(selProvince.getBytes("ISO-8859-1"),"GBK");

2、由於應用POST方法提交數據時,默認的字符編碼是UTF-8,所以當接收使用POST方法提交的數據時,要將編碼轉換為UTF-8。

例如,將用戶名的編碼轉換為UTF-8的代碼如下:

String username=request.getParameter("user"); //獲取用戶名

username=new String(username.getBytes("ISO-8859-1"),"UTF-8");

二、獲取服務器的響應結果時出現中文亂碼

由於Ajax在接收responseText或responseXML的值時是按照UTF-8的編碼格式進行解碼的,所以如果服務器端傳遞的數據不是UTF-8格式,在接收responseText或responseXML的值時,就可能產生亂碼。

解決的辦法是保證從服務器端傳遞的數據採用UTF-8的編碼格式。