大家都知道,xmlhttp在通信时采用的是utf编码,而国内很多网页的信息都是采用gbk编码,所以当直接通过ajax去连接网页,并将获取到的信息直接显示的话就会出现乱码的现象,有些时候无法改变服务器端网页的编码(例如获取别的网站的天气预报信息),在这种时候就只能在客户端通过js做编码的工作了,下面这段js就是用于将服务器端返回的gbk编码字符串转换为utf编码字符串:

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

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

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

 if(!glbEncode[k])
        if(!glbEncode[k])  {
{  
 gb2utf8_char = eval("0x"+k);
            gb2utf8_char = eval("0x"+k);  
 execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
            execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");  
 glbEncode[k]=escape(gb2utf8_char).substring(1,6);
            glbEncode[k]=escape(gb2utf8_char).substring(1,6);  
 }
        }  
 t[i]=glbEncode[k]+t[i].substring(4);
        t[i]=glbEncode[k]+t[i].substring(4);  
 }
    }  
 gb2utf8_data = gb2utf8_char = null;
    gb2utf8_data = gb2utf8_char = null;  
 return unescape(t.join("%"));
    return unescape(t.join("%"));  
 }
}这段代码也是从网上搜到的,具体是谁写的不清楚,所以在此未标明作者,如作者看到还请见谅。
有了这段代码后,就可以直接对返回的网页内容进行编码了:
var response=gb2utf8(response.responseBody);
经过这样的转码后所获得的页面内容就不会有乱码现象了;
当然,如果服务器端页面采用的是utf-8的编码那就根本不需要进行编码工作了。