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

2016-02-19 13:03 2 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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

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

延伸阅读
标签: Web开发
下边提供4种不同情况的乱码解决方案,基本上包括了web开发中出现乱码的不同情况。 主要针对java+mysql开发环境提出的乱码解决方案,只要作相应修改,可以用于不同语言环境的乱码问题解决。 一、JSP页面显示乱码  下面的显示页面(display.jsp)就出现乱码:   程序代码 html  head  ...
标签: 问题肌肤
25岁正是干劲十足的年龄,同时也是肌肤问题层出不穷的年龄,黑眼圈、毛孔粗大、眼角细纹、黑头等等各种各样的肌肤问题都同时围攻我们,是束手无策的投降,还是披荆斩棘的来一场肌肤之战?相信很多人会毫不犹豫的选择后者。那么该如何解决这些肌肤问题呢? 想要解决这些肌肤问题,首先一定要了解这些问题形成的根本原因,知己知彼方能百战不...
随着现代社会发展的快节奏,人们的身上背负着很大的压力,不论是工作压力还是其他的压力,都给人们的心里上造成了严重的心理负担,因此失眠是很多见的了。那么怎样治疗失眠问题呢?下面就让图老师小编给大家介绍一下吧。 目录 1、老年人失眠怎么办 2、儿童失眠怎么办 3、怀孕失眠怎么办 4、高考前失眠怎么办 5、...
想必很多人都有过落枕的经历,大多数人应该都知道落枕是很痛苦的。早上起床后感觉莫名其妙的脖子疼痛,让人抓狂。那么该如何治疗落枕最有效呢?我们要懂得一些生活方法,如果不幸落枕,能抓紧时间自己治疗,下面就一起来看看落枕的治疗方法有哪些吧。 一般落枕经1~2次治疗即可治愈 有的患者是在颈部长期病变的基础上产生...
随着现代节奏的加快,人们的工作压力也随之加大,除此之外还饱受很大的精神压力。为此很多人,经常熬夜,有时是为了工作,有时是因为失眠,睡眠质量明显下降。那么睡眠质量不好怎么办呢?下面就让图老师小编给大家介绍一下吧。 1、睡眠的规则 2、睡眠与疾病 3、垃圾睡眠给肝脏带来多大的伤害 4、睡眠的方法 5、 睡眠不足...

经验教程

697

收藏

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