每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐如何解决远程页面抓取中的乱码问题,赶紧看过来吧!
【 tulaoshi.com - Web开发 】
由于平时使用的网页文件基本上都是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://www.tulaoshi.com/n/20160219/1602830.html
看过《如何解决远程页面抓取中的乱码问题》的人还看了以下文章 更多>>