解决ajax获取页面直接显示乱码的方法

大家都知道,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的编码那就根本不需要进行编码工作了。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值