大家都知道,xmlhttp在通信時采用的是utf編碼,而國內很多網頁的信息都是采用gbk編碼,所以當直接通過ajax去連接網頁,并將獲取到的信息直接顯示的話就會出現亂碼的現象,有些時候無法改變服務器端網頁的編碼(例如獲取別的網站的天氣預報信息),在這種時候就只能在客戶端通過js做編碼的工作了,下面這段js就是用于將服務器端返回的gbk編碼字符串轉換為utf編碼字符串:

function?gb2utf8(data)
{??
????var?glbEncode?=?[];??
????gb2utf8_data?=?data;??
????execScript("gb2utf8_data?=?MidB(gb2utf8_data,?1)",?"VBScript");??

????var?t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.
{2})(.
{2})/g,"%$2%$1").replace(/%([A-Z].)%(.
{2})/g,"@$1$2");??
????t=t.split("@");??
????var?i=0,j=t.length,k;??

????while(++i<j)?
{??
????????k=t[i].substring(0,4);??

????????if(!glbEncode[k])?
{??
????????????gb2utf8_char?=?eval("0x"+k);??
????????????execScript("gb2utf8_char?=?Chr(gb2utf8_char)",?"VBScript");??
????????????glbEncode[k]=escape(gb2utf8_char).substring(1,6);??
????????}??
????????t[i]=glbEncode[k]+t[i].substring(4);??
????}??
????gb2utf8_data?=?gb2utf8_char?=?null;??
????return?unescape(t.join("%"));??
}這段代碼也是從網上搜到的,具體是誰寫的不清楚,所以在此未標明作者,如作者看到還請見諒。
有了這段代碼后,就可以直接對返回的網頁內容進行編碼了:
var response=gb2utf8(response.responseBody);
經過這樣的轉碼后所獲得的頁面內容就不會有亂碼現象了;
當然,如果服務器端頁面采用的是utf-8的編碼那就根本不需要進行編碼工作了。