当前位置: 移动技术网 > IT编程>脚本编程>VBScript > vbs中将GB2312转Unicode的代码

vbs中将GB2312转Unicode的代码

2017年12月08日  | 移动技术网IT编程  | 我要评论
今天写了一个类似于下面的程序:
复制代码 代码如下:

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网