最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vbs中將GB2312轉(zhuǎn)Unicode的代碼

 更新時(shí)間:2011年02月03日 15:33:00   作者:  
現(xiàn)在都是utf-8編碼的時(shí)代了。responseText對utf-8編碼支持得很好,但是如果是gb2312編碼就會返回亂碼,有時(shí)甚至?xí)?bào)錯(cuò)。
今天寫了一個(gè)類似于下面的程序:
復(fù)制代碼 代碼如下:

Dim http
Set http = CreateObject("msxml2.xmlhttp")
http.open "GET","http://www.sina.com.cn/",False
http.send
WScript.Echo http.responseText

但是卻發(fā)現(xiàn)返回的中文都是亂碼,看了一下發(fā)現(xiàn)新浪的編碼竟然是gb2312的,汗,現(xiàn)在都是utf-8編碼的時(shí)代了。responseText對utf-8編碼支持得很好,但是如果是gb2312編碼就會返回亂碼,有時(shí)甚至?xí)?bào)錯(cuò)。無奈,只好用responseBody然后自己轉(zhuǎn)碼。
復(fù)制代碼 代碼如下:

Dim http
Set http = CreateObject("msxml2.xmlhttp")
http.open "GET","http://www.sina.com.cn/",False
http.send
WScript.Echo GB2312ToUnicode(http.responseBody)

于是就要自己寫一個(gè)GB2312ToUnicode函數(shù),用ado很容易實(shí)現(xiàn):
復(fù)制代碼 代碼如下:

Function GB2312ToUnicode(str)
With CreateObject("adodb.stream")
.Type = 1 : .Open
.Write str : .Position = 0
.Type = 2 : .Charset = "gb2312"
GB2312ToUnicode = .ReadText : .Close
End With
End Function

這樣返回的就是VBS字符串默認(rèn)的Unicode編碼了,不過用ado不能顯示我鬼使神差的VBS水平,于是自己根據(jù)“算法”再寫了一個(gè):
復(fù)制代碼 代碼如下:

Function GB2312ToUnicode(str)
length = LenB(str) : out = ""
For i = 1 To length
c = AscB(MidB(str,i,1))
If c <= 127 Then
out = out & Chr(c)
Else
i = i + 1
d = Hex(AscB(MidB(str,i,1)))
c = "&H" & Hex(c) & d
out = out & Chr(c)
End If
Next
GB2312ToUnicode = out
End Function

只可惜效率太低,就當(dāng)練練手吧。
原文:http://demon.tw/programming/vbs-gb2312-unicode.html

相關(guān)文章

最新評論

运城市| 宜昌市| 临江市| 威宁| 鲜城| 罗平县| 汤阴县| 平昌县| 西宁市| 苍南县| 平凉市| 四子王旗| 庄浪县| 陇川县| 察隅县| 博乐市| 右玉县| 商城县| 浦北县| 璧山县| 平昌县| 上栗县| 石首市| 彰武县| 明水县| 海伦市| 三亚市| 呼和浩特市| 东莞市| 长沙县| 牙克石市| 凉城县| 都兰县| 全州县| 即墨市| 房产| 邓州市| 阿坝| 邓州市| 郧西县| 宕昌县|