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

 更新时间:2006年12月22日 00:00:00   作者:  

由于平时使用的网页文件基本上都是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(++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
        return unescape(t.join("%")).slice(0,-1)
    }
    xh.send(null)
}
</script>

相关文章

  • Ajax request response 乱码解决方法

    Ajax request response 乱码解决方法

    今天最早遇到一个脱离平台,单独给用户定制开发的关于状态管理的功能局部刷新出现乱码的情况,仔细查了下代码发现并无特殊之处,charset统一使用GB18030,ajax传递参数使用默认UTF-8,对传递的中文信息手动转码。
    2009-05-05
  • springmvc 结合ajax批量新增的实现方法

    springmvc 结合ajax批量新增的实现方法

    这篇文章主要介绍了springmvc 结合ajax批量新增的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • ajax编写简单的登录页面

    ajax编写简单的登录页面

    这篇文章主要为大家详细介绍了ajax编写简单登录页面的具体代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • ajax动态查询数据库数据并显示在前台的方法

    ajax动态查询数据库数据并显示在前台的方法

    今天小编就为大家分享一篇ajax动态查询数据库数据并显示在前台的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 谈谈你对aja的理解(一、二)

    谈谈你对aja的理解(一、二)

    Ajax是Asynchronous Javascript And XML的缩写,其作用通过Ajax可以使用Javascript语句来调用XMLHttpRequest对象,直接与服务器进行通讯,可以在不重载页面的情况下与服务器交换数据。
    2015-10-10
  • Ajax传输中文乱码问题的解决办法

    Ajax传输中文乱码问题的解决办法

    这篇文章主要介绍了Ajax传输中文乱码问题的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • ajax实现登录功能

    ajax实现登录功能

    本文主要介绍了ajax实现登录功能的示例代码。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Ajax异步提交数据返回值的换行问题实例分析

    Ajax异步提交数据返回值的换行问题实例分析

    这篇文章主要介绍了Ajax异步提交数据返回值的换行问题,结合实例形式较为详细的分析了ajax异步提交过程中返回值带有换行的处理技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • 看图理解 普通交互方式和Ajax交互方式区别

    看图理解 普通交互方式和Ajax交互方式区别

    看图理解 普通交互方式和Ajax交互方式区别,需要的朋友可以参考下。
    2011-11-11
  • Ajax 生成流文件下载(实现代码)

    Ajax 生成流文件下载(实现代码)

    使用Ajax生成流文件下载的功能,可以使用隐藏form的方式。需要的朋友可以参考下
    2013-07-07

最新评论