千家信息网

编码为GB2312网站如何让AJAX接收的数据显示支持中文

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关编码为GB2312网站如何让AJAX接收的数据显示支持中文的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:var xmlHttp;var
千家信息网最后更新 2026年11月02日编码为GB2312网站如何让AJAX接收的数据显示支持中文

这篇文章给大家分享的是有关编码为GB2312网站如何让AJAX接收的数据显示支持中文的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

代码如下:




以下是此篇文章全文:
XMLHttpRequest 默认是用UTF-8 传递数据。当服务端的返回数据是UTF-8编码的时候,它工作得很好(开发web应用,当服务端和客户端以及数据库统一使用UTF-8编码可以有效的避免乱码问题)。如果服务端设置了正确的Content-Type Response Header以及编码信息,那么XmlHttpRequest也可以正确工作。
可是当使用XMLHttpRequest读取中文网页内容时, 如果服务端的程序没有设置Content-Type Response Header,或者Header没有设置编码类型,那么我们访问responseText属性的时候就可能遭遇乱码。如以下代码用XMLHttpRequest获取雅虎中国网站的星座站首页:

复制代码 代码如下:


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(xmlhttp.responseText);
};
xmlhttp.send(null);


纵使yahoo中国这样专业的网站,对web标准的支持还很不彻底,弹出的html源码中充斥不符合web标准的html标签,当然还有已预见的乱码。
同样遗憾的是,FireFox 和 IE 的解决方法也是南辕北辙
FireFox 做法:
FireFox 的XMLHttpRequest对象支持overrideMimeType方法,可以指定返回数据的编码类型,利用该方法可以解决中文乱码,前面的代码修改如下:

复制代码 代码如下:


xmlhttp = getXMLHttpRequest();
var url = "http://cn.astrology.yahoo.com/";;
xmlhttp.open("GET", url, true);
xmlhttp.overrideMimeType("text/html;charset=gb2312");//设定以gb2312编码识别数据
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4)
if (xmlhttp.status == 200)
alert(xmlhttp.responseText);
};
xmlhttp.send(null);


Internet Explorer 做法:
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(++ik=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编码,或者在服务端设置正确的编码信息。至于以上范例,有盗取其他网站内容的嫌疑,更是不为提倡。

感谢各位的阅读!关于"编码为GB2312网站如何让AJAX接收的数据显示支持中文"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

编码 数据 代码 支持 方法 网站 中文 服务 乱码 内容 函数 UTF-8 标准 篇文章 信息 做法 时候 更多 端的 类型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 华服互联网科技靠谱吗 今日互联网科技 极限挑战互联网科技 未来的互联网科技 伴你行互联网科技有限公司 四川狮子座互联网科技 剑昆互联网络科技有限公司临桂 青岛科技大学互联网大赛研究生 新兴科技互联网创新大赛颁奖典礼 辽宁互联网新科技 恒生互联网科技指数跳水 银川新华互联网科技学校联系电话 互联网科技人工智能实验室 广东工业互联网大赛深圳学泰科技 中天科技中国工业互联网 互联网科技融合创新 河南商务圈互联网科技有限公司 黑龙江互联网科技公司 互联网高科技绘画 广东万易互联网科技有限公司惠州分公司 博彦科技互联网金融 互联网科技官网 宜安科技 互联网金融 郑州华宇互联网科技 互联网科技素材视频竖屏 未来五年的互联网科技 上海乐五互联网科技有限公司 唐山双旺合互联网科技产业园 杭州融税互联网科技有限公司
0