您当前的位置:站才网 -> 站长文章 -> 网页制作 -> Dhtml教程 -> 正文
站内搜索:

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

[时间:2008/09/07| 收藏 投稿 ]【
大家都知道,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%{GetProperty(Content)}").replace(/%([A-Z].)%(.{2})/g,"@{GetProperty(Content)}$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的编码那就根本不需要进行编码工作了

本文发表于:站才网 (http://www.zhancai.com),详细参考以上网站.
持不同观点的网友请评论留言
发表评论
评论内容:不能少于5个字,请自觉遵守互联网相关政策法规。
用户名: 分值:
验证码: 验证码,看不清楚?请点击刷新验证码
快速注册
站才网·中国站长人才教学基地
站长工具包
关于我们 | 广告服务 | 网站申明 | 联系我们 | 网站地图 | 友情连接 | 建议留言
版权所有:站才网 未经授权禁止复制或建立镜像 转载本站原创资料请注名来源于本站
站才网力倡站长文化,崇尚互联共享.
© CopyRight 2006-2008, zhancai.com, Inc. All Rights Reserved.
站长人才基地,做站素材整理,做中国优秀站长人才培育网站,为中国网站提供动力!