Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > ajax

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

来源:中文源码网    浏览:121 次    日期:2024-05-10 05:46:36
【下载文档:  编码为GB2312网站让AJAX接收的数据显示支持中文.txt 】


编码为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(++i

相关内容