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

2016-02-19 13:03 7 1 收藏

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

【 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/webkaifa/)

来源:http://www.tulaoshi.com/n/20160219/1602830.html

延伸阅读
标签: 问题肌肤
25岁正是干劲十足的年龄,同时也是肌肤问题层出不穷的年龄,黑眼圈、毛孔粗大、眼角细纹、黑头等等各种各样的肌肤问题都同时围攻我们,是束手无策的投降,还是披荆斩棘的来一场肌肤之战?相信很多人会毫不犹豫的选择后者。那么该如何解决这些肌肤问题呢? 想要解决这些肌肤问题,首先一定要了解这些问题形成的根本原因,知己知彼方能百战不...
使用sqlplus连接oracle数据库的时候,老是出现????一类的字符,主要是因为 服务器和客户端语言设置不相同。 日文环境下 服务器端的设置为 JA16SJIS,客户端没有作设置就出现了上述现象。 请将环境变量设值为 [csh] setenv NLS_LANG American_Japan.JA16SJIS [bash] export NLS_LANG=American_Japan.JA16...
随着现代节奏的加快,人们的工作压力也随之加大,除此之外还饱受很大的精神压力。为此很多人,经常熬夜,有时是为了工作,有时是因为失眠,睡眠质量明显下降。那么睡眠质量不好怎么办呢?下面就让图老师小编给大家介绍一下吧。 1、睡眠的规则 2、睡眠与疾病 3、垃圾睡眠给肝脏带来多大的伤害 4、睡眠的方法 5、 睡眠不足...
大大的眼袋不仅是双眼看上去变小了,明眸也会显得暗淡了!你是不是还在绞尽脑汁想要抚平眼袋?但去眼袋的方法那么多,到底哪些才是去眼袋最有效的方法?大眼有理明眸无罪!下面,小编 1、选择质地清爽眼霜 过于油性的眼霜,皮肤难于全剖吸收,使多余的油脂粒堆积在眼部周围,而形成眼袋状。眼霜最好还是选用质地清爽的产品。在涂眼...
随着现代社会发展的快节奏,人们的身上背负着很大的压力,不论是工作压力还是其他的压力,都给人们的心里上造成了严重的心理负担,因此失眠是很多见的了。那么怎样治疗失眠问题呢?下面就让图老师小编给大家介绍一下吧。 目录 1、老年人失眠怎么办 2、儿童失眠怎么办 3、怀孕失眠怎么办 4、高考前失眠怎么办 5、...

经验教程

898

收藏

23
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部