常有人说,他们在使用XMLHTTP过程中,总是为中文乱码的问题烦恼。本人查阅了一些资料,结果令我失望,大家都是使用ASP服务器端技术解决该问题。

先分析一下为何会出现中文乱码的问题。原因很简单:XMLHTTP得到Response时假定Response是UTF8编码的,它把含GB2312编码的HTML当成UTF8格式,因此,出现了中文乱码。

那么,除了使用ASP服务器端脚本技术外,就没有客户端的解决办法吗?答案是:有!

本人使用VBScript客户端脚本,成功实现了不使用ASP,解决了XMLHTTP 抓取 HTML页面时出现中文乱码的问题。

为何使用VBScript,而不是大家常用的JScript?XMLHTTP的responseBody返回的是一个unsigned bytes数组。VBScript提供了许多用于操作字符串和格式化数据的函数,以及访问安全数组的方法。这些函数或方法在JScript中并不存在。这里我们需要使用VBScript的内置函数:MidB、AscB、LenB等,来访问responseBody。

说句题外话,我不是在强调VBScript比JScript好,而是二者都有自己的特点。第一次在CSDN上写文章,谢谢大家支持。写这边文章有两个目的:一、锻炼自己;二、希望大家遇到问题时,要学会分析问题,做到有的放矢,知其然也知其所以然。

我给出代码Test.htm,它包括了获取自身代码和获取其他网页代码两种应用,具体脚本如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- 作者:小林,sulins@tom.com -->
<HTML>

<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
</HEAD>

<script language=VBScript>

Function bytes2BSTR(vIn)
    strReturn = ""
    For i = 1 To LenB(vIn)
        ThisCharCode = AscB(MidB(vIn,i,1))
        If ThisCharCode < &H80 Then
            strReturn = strReturn & Chr(ThisCharCode)
        Else
            NextCharCode = AscB(MidB(vIn,i+1,1))
            strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
            i = i + 1
        End If
    Next
    bytes2BSTR = strReturn
End Function

Function viewSource1()
 dim XmlHttp
 set XmlHttp = CreateObject("Microsoft.XMLHTTP")
 XmlHttp.Open "GET", document.location.href, false
 XmlHttp.setRequestHeader "Content-Type","text/XML"
 XmlHttp.Send
 
 dim html
 html = bytes2BSTR(XmlHttp.responseBody)
 msgbox html
End Function

Function viewSource2()
 dim XmlHttp
 set XmlHttp = CreateObject("Microsoft.XMLHTTP")
 XmlHttp.Open "GET", "http://www.google.com", false
 XmlHttp.setRequestHeader "Content-Type","text/XML"
 XmlHttp.Send
 
 dim html
 html = bytes2BSTR(XmlHttp.responseBody)
 msgbox html
End Function

</script>

<BODY bgcolor=gainsboro style='border:1pt solid white'>
<TABLE class=text>
 <tr>
  <td class=text>XMLHTTP Get HTML页面时的中文乱码之完全客户端Script解决方案</td>
 </tr>
 <tr>
  <td class=button><button οnclick=viewSource1()>查看自身的网页代码</button></td>
 </tr>
 <tr>
  <td class=button><button οnclick=viewSource2()>查看google主页代码</button></td>
 </tr> 
</TABLE>
</BODY>
</HTML>

转载于:https://www.cnblogs.com/xnxqs/archive/2005/09/12/234761.html

XMLHTTP Get HTML页面时的中文乱码之完全客户端Script解决方案相关推荐

  1. java url 传值乱码问题_java页面url传值中文乱码怎么办

    是不是有很多用户们都有遇到过java页面url传值中文乱码的问题呢?java页面url传值中文乱码怎么办?那么今天我们就跟爱站小编一起去看看具体的解决方法吧. 中文问题,是在应用中常常遇到的问题. 这 ...

  2. 使用eclipse开发web项目运行时出现中文乱码问题

    使用eclipse开发web项目运行时出现中文乱码问题 检查Tomcat sever.xml中的编码设置是否为 utf-8 ,不是的话改一下: <?xml version="1.0&q ...

  3. MySQL 插入数据时,中文乱码问题的解决

    MySQL 插入数据时,中文乱码问题的解决 参考文章: (1)MySQL 插入数据时,中文乱码问题的解决 (2)https://www.cnblogs.com/sunzn/archive/2013/0 ...

  4. ssm idea后端接收数据输出在控制台时出现中文乱码

    idea 后端接收数据输出在控制台时出现中文乱码 环境 maven项目, ssm框架(spring+springmvc+mybatis)注解和配置文件混合开发, tomcat服务器 解决乱码的方式(推 ...

  5. mysql导入数据库注释乱码_source命令 导入.sql文件时,中文乱码 或者是注释乱码...

    1.source命令 导入.sql文件时,中文乱码 或者是注释乱码 首先进入dos命令,进入mysql数据库,之后use 数据库:之后查看你的mysql数据库编码 如下命令:模糊查询变量charact ...

  6. spring使用@Value注解读取.properties文件时出现中文乱码问题的解决

    spring使用@Value注解读取.properties文件时出现中文乱码问题的解决 参考文章: (1)spring使用@Value注解读取.properties文件时出现中文乱码问题的解决 (2) ...

  7. mysql脚本执行中文乱码_MySQL从命令行导入SQL脚本时出现中文乱码的解决方法

    本文实例讲述了MySQL从命令行导入SQL脚本时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 在图形界面管理工具 MySql Query Browser中打开脚本(脚本包括建库.建表.添加 ...

  8. 解决在Linux下安装Oracle时的中文乱码问题

    解决在Linux下安装Oracle时的中文乱码问题 参考文章: (1)解决在Linux下安装Oracle时的中文乱码问题 (2)https://www.cnblogs.com/qiumingcheng ...

  9. Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法

    Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法 Eclipse 工具中的操作 流程图片生成的两种方式: 使用 activiti-designer 设计流程图 ...

  10. java读txt文件乱码_java读取txt文件时出现中文乱码怎么解决

    java读取txt文件时出现中文乱码怎么解决 发布时间:2020-06-25 15:27:31 来源:亿速云 阅读:105 作者:Leah java读取txt文件时出现中文乱码怎么解决?针对这个问题, ...

最新文章

  1. Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)
  2. 链接多个数据库的方法
  3. 科大星云诗社动态20210124
  4. 曝台积电芯片要涨价:2022年至少上调10%
  5. 2018.08.09洛谷P3959 宝藏(随机化贪心)
  6. Android客户端与服务器之间传递json数据
  7. struts2 + ajax 用户名登录验证(struts2+spring+ibatis)
  8. 冈萨雷斯 数字图像处理 插图 打包下载 原tif版 + png版
  9. 谷歌地球专业版:Google Earth Pro for Mac中文免费版
  10. 百度云图片识别(ImageRecognition)
  11. B站崩了、Facebook崩了,我们到底该怎么保证高可用
  12. Could not found global transaction xid
  13. Delphi更改.exe文件图标
  14. TP5查询构造器查询语句select、find、colum、value详解
  15. 用TDA7377做一款立体声功放,DIY功放了解一下?
  16. 比你拼命的人多的是,最可怕的是比你牛的人比你还拼命。。。励志
  17. SQL Server Express下載地址
  18. CSS3实现自适应的聊天气泡
  19. 项目一:瑞吉点餐中遇到的问题集
  20. java如何通过域名查ip_JAVA实现通过IP反查域名

热门文章

  1. 理解Java - JDK动态代理原理
  2. JavaScript - 理解面向对象编程
  3. jQuery基础资料(三)
  4. bilstmcrf词性标注_BiLSTM+CRF 的实现详解
  5. babel与php,javascript – Babel JS babel-preset-php错误
  6. jsp调用servlet方法_Servlet的运行原理
  7. snapgene怎么比对序列_找不到相似序列?快来Blast一下!
  8. 修改FTP服务器时长,连接ftp服务器的时长怎么设置
  9. 牛b硬件信息修改大师_比X大师更靠谱?一款真正良心的硬件检测工具
  10. request与在php安全,request导致的安全性问题分析