今天写了一个类似于下面的程序:
dim http
set http = createobject("msxml2.xmlhttp")
http.open "get","http://www.sina.com.cn/",false
http.send
wscript.echo http.responsetext
但是却发现返回的中文都是乱码,看了一下发现新浪的编码竟然是gb2312的,汗,现在都是utf-8编码的时代了。responsetext对utf-8编码支持得很好,但是如果是gb2312编码就会返回乱码,有时甚至会报错。无奈,只好用responsebody然后自己转码。
dim http
set http = createobject("msxml2.xmlhttp")
http.open "get","http://www.sina.com.cn/",false
http.send
wscript.echo gb2312tounicode(http.responsebody)
于是就要自己写一个gb2312tounicode函数,用ado很容易实现:
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字符串默认的unicode编码了,不过用ado不能显示我鬼使神差的vbs水平,于是自己根据“算法”再写了一个:
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
只可惜效率太低,就当练练手吧。
原文:http://demon.tw/programming/vbs-gb2312-unicode.html
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
-
-
用vbs实现文本循环读取
因为测试中需要读取一批url数据进行浏览,其实使用qtp本身的table能实现多种读取方式,但是因为需要tabel是使用excel保存的,在没有...
[阅读全文]
-
-
-
-
-
网友评论