主頁 > 知識庫 > vbs中將GB2312轉(zhuǎn)Unicode的代碼

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

熱門標(biāo)簽:打電話的外呼系統(tǒng)貴不貴 陜西高頻外呼回?fù)芟到y(tǒng)哪家好 加盟電銷機(jī)器人好的品牌 外呼營銷下單系統(tǒng) 辦理膠州400電話財稅 前鋒辦理400電話申請 新密防封卡外呼系統(tǒng)違法嗎 海外美發(fā)店地圖標(biāo)注 百度地圖標(biāo)注怎么卸載
今天寫了一個類似于下面的程序:
復(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編碼的時代了。responseText對utf-8編碼支持得很好,但是如果是gb2312編碼就會返回亂碼,有時甚至?xí)箦e。無奈,只好用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)

于是就要自己寫一個GB2312ToUnicode函數(shù),用ado很容易實現(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ù)“算法”再寫了一個:
復(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

標(biāo)簽:伊春 四平 河南 梅州 阜陽 牡丹江 武威 咸陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《vbs中將GB2312轉(zhuǎn)Unicode的代碼》,本文關(guān)鍵詞  vbs,中將,GB2312,轉(zhuǎn),Unicode,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《vbs中將GB2312轉(zhuǎn)Unicode的代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于vbs中將GB2312轉(zhuǎn)Unicode的代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章