如何解决远程页面抓取中的乱码问题

爱生活爱小扬

爱生活爱小扬

2016-02-19 13:03

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐如何解决远程页面抓取中的乱码问题,赶紧看过来吧!

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

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

body/body
script
loadPage("index.htm")
function loadPage(url){
    var xh=window.Event?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")
    xh.open("GET",url,true)
    if(window.Event)
        xh.overrideMimeType("text/xml;charset=gb2312")
    xh.onreadystatechange=function(){
        if(xh.readyState!=4)
            return
        var v
        v=window.Event?xh.responseText:window.gb2utf8(xh.responseBody)
        alert(v)
    }
    window.gb2utf8=function(data){
        var glbEncode=[],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(++ilen){
            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
        return unescape(t.join("%")).slice(0,-1)
    }
    xh.send(null)
}
/script

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)
展开更多 50%)
分享

猜你喜欢

如何解决远程页面抓取中的乱码问题

Web开发
如何解决远程页面抓取中的乱码问题

解决远程页面抓取中的乱码问题?

Web开发
解决远程页面抓取中的乱码问题?

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何解决系统出现乱码问题

计算机应用技术
如何解决系统出现乱码问题

Xml Http抓取数据时乱码问题解决

Web开发
Xml Http抓取数据时乱码问题解决

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MathType6.9如何解决输入中文乱码问题

电脑网络
MathType6.9如何解决输入中文乱码问题

如何解决Sybase数据库乱码问题详解

SQLServer
如何解决Sybase数据库乱码问题详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Excel技巧 制作动态表头提高工作效率

Excel技巧 制作动态表头提高工作效率

jquery.masonry瀑布流插件用法详解

jquery.masonry瀑布流插件用法详解
下拉加载更多内容 ↓