IE下AJAX中文返回乱码的解决方法

IE不支持overrideMimeType方法,并且只能用一种很蹩脚的方法来解决,此时需要引入一个杂交的函数:   

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("%"));  
}
xmlhttp = getXMLHttpRequest();  
var url = "http://cn.astrology.yahoo.com/";;  
xmlhttp.open(
"GET", url, true);  
xmlhttp.onreadystatechange 
= function(){  
if (xmlhttp.readyState == 4)  
    
if (xmlhttp.status == 200)  
        alert(gb2utf8(xmlhttp.responseBody)); 
//注意这里要用responseBody  
}
;  
xmlhttp.send(
null);  
gb2utf8函数直接解析XMLHttpRequest返回的二进制数据,其中要利用execScript方法来执行VBScript的函数。所以说是一个杂交的函数。感谢blueidea论坛 提供的算法。  

虽然有了解决的办法,但形式丑陋,而且不符合web标准。所以应该在编程中尽量避免,如果是开发web应用,应尽量使用UTF
-8编码,或者在服务端设置正确的编码信息。至于以上范例,有盗取其他网站内容的嫌疑,更是不为提倡。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值