AJAX 編碼問題分析

2021-08-26 04:58:42 字數 2708 閱讀 7991

1、要傳送的內容

格式:xml;編碼:utf-8

ajax

編碼:utf-8(req.getcharacterencoding();讀出客戶端編碼為utf-8)

servlet

編碼:預設(request位設定編碼)

結果:

//注意:tempcontent輸出未標明正常的,均為不正常 log.debug("encoding=" + encoding); //encoding=utf-8 log.debug("tempcontent=" + tempcontent); //正常 log.debug("3tempcontent=" + new string(tempcontent.getbytes("gb2312"),"gb2312")); //正常 log.debug("5tempcontent=" + new string(tempcontent.getbytes("utf-8"),"utf-8")); //正常 log.debug("8tempcontent=" + new string(tempcontent.getbytes("utf-8"),"iso8859-1")); //正常

下面**為xml內容生成**:

下面**為ajax 傳送**:

下面為servlet **:

2、 要傳送的內容:

格式:xml;編碼:gb2312

ajax

編碼:utf-8(req.getcharacterencoding();讀出客戶端編碼為utf-8)

servlet

編碼:預設(reqest未設定編碼)

結果:

log.debug("encoding=" + encoding); //encoding=utf-8 log.debug("tempcontent=" + tempcontent); //正常 log.debug("3tempcontent=" + new string(tempcontent.getbytes("gb2312"),"gb2312")); //正常 log.debug("5tempcontent=" + new string(tempcontent.getbytes("utf-8"),"utf-8")); //正常 log.debug("8tempcontent=" + new string(tempcontent.getbytes("utf-8"),"iso8859-1")); //正常

可以看出後台能正確解碼與xml的編碼無關。

3、 要傳送的內容:

格式:xml;編碼:gb2312

ajax

編碼:位設定(req.getcharacterencoding();讀出客戶端編碼為null)

servlet

編碼:預設(reqest未設定編碼)

結果:log.debug("encoding=" + encoding); //encoding=null

log.debug("4tempcontent=" + new string(tempcontent.getbytes("iso8859-1"),"utf-8")); //正常

4、 要傳送的內容:

格式:xml;編碼:gb2312

ajax

編碼:位設定(req.getcharacterencoding();讀出客戶端編碼為null)

servlet

編碼:req.setcharacterencoding("utf-8"); //或者使用下面的語句 "iso8859-1");

結果:

與3相同。可見,req指定編碼並不能正常輸出,需要轉碼。並且和使用encodeuricomponent()與否無關(使用一次)。

5、 要傳送的內容:

格式:xml;編碼:gb2312

ajax

編碼:gbk(req.getcharacterencoding();讀出客戶端編碼為gbk)

servlet

編碼:req.setcharacterencoding("utf-8"); //或者使用下面的語句 "iso8859-1");

結果:

均不能正常解碼。

總結

通過實驗可以看出,ajax post資料的編碼和資料本身無關,和servlet是否設定編碼無關:

req.setcharacterencoding("utf-8")

僅和ajax使用的編碼有關,並且只能是utf-8(不是utf-8有可能嗎?):

若自己封裝ajax函式時,不要忘記指定字符集屬性:charset=utf-8

ajax中傳遞中文引數的編碼問題

遇到問題 在使用xhr發出請求時,請求的url中引數帶中文,這時在後台解析request得不到中文 如 request new activexobject microsoft.xmlhttp request.open get url 中我的url需要帶中文引數 直接加引數是在後台解析不出來的,所以我...

Ajax中文編碼問題解決方案

ajax不支援多種字符集,其預設的字符集是utf 8,所以在應用ajax技術的程式中應及時進行編碼轉換,否則對於程式中出現 的中文字元將變成亂碼。一般在以下兩種情況下將產生亂碼。1.傳送路徑的引數中包括中文,在伺服器端接收引數值時產生亂碼 將資料提交到伺服器有兩種方法 一種是使用get方法提交 另一...

關於ajax的IE cache 問題分析及解決

最近做了乙個ajax相關的功能,大概目標根據使用者的不同登陸狀態來生成不同的歡迎語,如下 使用者登陸了,就顯示 您好呀,又來啦!使用者不登陸,則顯示 您還沒登陸!很簡單的應用,結果我寫完ajax後,發現乙個致命的問題 firefox中一切正常,但在ie第一次開啟沒問題,再重新整理一次,中文就會成為亂...