国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

XMLHTTP Get HTML頁面時的中文亂碼之完全客戶端Script解決方案

2019-11-18 19:13:14
字體:
來源:轉載
供稿:網友

    常有人說,他們在使用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", " 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 onclick=viewSource1()>查看自身的網頁代碼</button></td>
 </tr>
 <tr>
  <td class=button><button onclick=viewSource2()>查看google主頁代碼</button></td>
 </tr> 
</TABLE>
</BODY>
</HTML>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保康县| 临江市| 临颍县| 拉萨市| 石首市| 涟水县| 于都县| 凉城县| 南和县| 连城县| 盐源县| 定襄县| 齐齐哈尔市| 陆丰市| 河源市| 太仓市| 含山县| 江源县| 江油市| 威海市| 乌拉特后旗| 聊城市| 蛟河市| 拉孜县| 灵璧县| 遂昌县| 台北市| 南靖县| 庆城县| 嘉定区| 射阳县| 开化县| 霍邱县| 岢岚县| 莎车县| 三原县| 天峻县| 乐清市| 资阳市| 五峰| 鲁甸县|