手机
当前位置:查字典教程网 >编程开发 >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中文乱码问题探讨及解决

如何解决Ajax访问不断变化的session的值不一致以及HTTP协议中的GET、POST的区别

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

关于ajax的多次请求问题

AJAX实现简单的注册页面异步请求实例代码

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

通过Ajax手动解决WordPress WP-PostViews不计数的问题

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

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

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

精品推荐
分类导航