手机
当前位置:查字典教程网 >编程开发 >AJAX相关 >如何解决远程页面抓取中的乱码问题
如何解决远程页面抓取中的乱码问题
摘要:由于平时使用的网页文件基本上都是gb2312编码方式,如果通过xmlhttp控件读取的话,肯定会出现乱码问题,但是要把所有文件都改成utf-...

由于平时使用的网页文件基本上都是gb2312编码方式,如果通过xmlhttp控件读取的话,肯定会出现乱码问题,但是要把所有文件都改成utf-8编码,操作上比较麻烦。经过反复比较,我找到了相对实用的解决方法。

ff提供了overrideMimeType方法,可以指定返回值的编码,所以解决起来比较简单,只要把这个方法指向gb2312就可以了。对于IE,可以用vbs配合来作编码转换,用gb2utf8来转换接收到的二进制数据,其中利用到execScript方法来调用vbs的函数。

复制代码 代码如下:

<body></body>

<script>

loadPage("index.htm")

functionloadPage(url){

varxh=window.Event?newXMLHttpRequest():newActiveXObject("Microsoft.XMLHTTP")

xh.open("GET",url,true)

if(window.Event)

xh.overrideMimeType("text/xml;charset=gb2312")

xh.onreadystatechange=function(){

if(xh.readyState!=4)

return

varv

v=window.Event?xh.responseText:window.gb2utf8(xh.responseBody)

alert(v)

}

window.gb2utf8=function(data){

varglbEncode=[],t,i,j,len

gb2utf8_data=data

execScript("gb2utf8_data=MidB(gb2utf8_data,1)+''","vbscript")

t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2")

t=t.split("@")

i=0

len=t.length

while(++i<len){

j=t[i].substring(0,4)

if(!glbEncode[j]){

gb2utf8_char=eval("0x"+j)

execScript("gb2utf8_char=Chr(gb2utf8_char)","vbscript")

glbEncode[j]=escape(gb2utf8_char).substring(1,6)

}

t[i]=glbEncode[j]+t[i].substring(4)

}

gb2utf8_data=gb2utf8_char=null

returnunescape(t.join("%")).slice(0,-1)

}

xh.send(null)

}

</script>

【如何解决远程页面抓取中的乱码问题】相关文章:

如何成为AJAX高手

使用HTML5中postMessage知识点解决Ajax中POST跨域问题

关于IE下AJAX的问题探讨

STRUTS+AJAX+JSP 请求到后台乱码问题解决方法

ajax浏览器兼容的问题探讨

关于ajax的多次请求问题

AJAX防止页面缓存的代码

解决ajax回调函数返回的字符串乱码问题

Ajax 程序开发中常见问题

Ajax获取数据然后显示在页面的实现方法

精品推荐
分类导航