手机
当前位置:查字典教程网 >编程开发 >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在google chrome浏览器上失效

asp+ajax实现静态页面分页的代码

ajax浏览器兼容的问题探讨

AJAX中文乱码问题探讨及解决

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

如何利用jQuery post传递含特殊字符的数据

基于Jquery.history解决ajax的前进后退问题

Ajax在请求过程中显示进度的简单实现

ajax中文乱码问题解决方案

一句话解决AJAX中文乱码问题[推荐]

精品推荐
分类导航