本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7589867
建立时间:2006年5月29日




[Prototype(Ajax)]备忘:解决ajax获取页面直接显示乱码的方法
软件技术

lhwork 发表于 2006/9/7 10:08:55

大家都知道,xmlhttp在通信时采用的是utf编码,而国内很多网页的信息都是采用gbk编码,所以当直接通过ajax去连接网页,并将获取到的信息 直接显示的话就会出现乱码的现象,有些时候无法改变服务器端网页的编码(例如获取别的网站的天气预报信息),在这种时候就只能在客户端通过js做编码的工 作了,下面这段js就是用于将服务器端返回的gbk编码字符串转换为utf编码字符串:500)this.width=500'>500)this.width=500'>function gb2utf8(data)500)this.width=500'>{  500)this.width=500'>    var glbEncode = [];  500)this.width=500'>    gb2utf8_data = data;  500)this.width=500'>    execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");  500)this.width=500'>500)this.width=500'>    var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.500)this.width=500'>{2})(.500)this.width=500'>{2})/g,"%$2%$1").replace(/%([A-Z].)%(.500)this.width=500'>{2})/g,"@$1$2");  500)this.width=500'>    t=t.split("@");  500)this.width=500'>    var i=0,j=t.length,k;  500)this.width=500'>500)this.width=500'>    while(++i<j) 500)this.width=500'>{  500)this.width=500'>        k=t[i].substring(0,4);  500)this.width=500'>500)this.width=500'>        if(!glbEncode[k]) 500)this.width=500'>{  500)this.width=500'>            gb2utf8_char = eval("0x"+k);  500)this.width=500'>            execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");  500)this.width=500'>            glbEncode[k]=escape(gb2utf8_char).substring(1,6);  500)this.width=500'>        }  500)this.width=500'>        t[i]=glbEncode[k]+t[i].substring(4);  500)this.width=500'>    }  500)this.width=500'>    gb2utf8_data = gb2utf8_char = null;  500)this.width=500'>    return unescape(t.join("%"));  500)this.width=500'>}这段代码也是从网上搜到的,具体是谁写的不清楚,所以在此未标明作者,如作者看到还请见谅。有了这段代码后,就可以直接对返回的网页内容进行编码了:var response=gb2utf8(response.responseBody);经过这样的转码后所获得的页面内容就不会有乱码现象了;当然,如果服务器端页面采用的是utf-8的编码那就根本不需要进行编码工作了。 其实只要服务器返回的数据头声明了 <?xml version="1.0" encoding="gb2312"?> xmlhttp(request)控件应该就可以正确解码了。 编码可以参考一下: http://www.blogjava.net/emu/articles/31283.html http://www.blogjava.net/emu/articles/31756.html


阅读全文(1943) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144764547 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号