VBS输出中文
分类:内容分享技术相关 阅读量: 2,593 次

VBS输出中文

分类:内容分享技术相关 阅读量: 2,593 次

说白了还是字符编码问题,使用ANSI编码写VBS脚本,或者写完之后把脚本转码为ANSI编码之后中文在脚本中才能正常使用、显示,否则有中文的话要么中文乱码,要么就直接不能运行。
vbs-bianma.png


问题

但是呢,有些脚本你写出来给别人用,别人可能会修改,而别人修改保存之后可不一定还是ANSI编码了,这个时候轻则脚本中文乱码,重则直接不能运行,而且我对UTF-8这个编码情有独钟,所以想办法让VBS在UTF-8的编码下依旧能输出汉字。

解决方案

我百度、Google了几十分钟,也尝试了很多办法,最后在百度知道上面的一个问题中找到了解决办法,这个问题就是“用vbs把asc码:-15133转为汉字,要源代码”,结果就是直接chr(-15133),就可以输出对应asc码的字。

只需写个脚本把一段汉字全都转成对应的ANSI码,然后连接起来在输出就可以了。

而VBS有一个Asc函数:

Asc 函数可把字符串中的第一个字母转换为对应的 ANSI 代码,并返回结果。

可是有些小坑,我不懂为什么只转换首个字母,这样做有什么意义呢?不过不怕可以使用for循环解决。

成品

代码如下:

Dim s,l,ss,c
s = "这是一段用来测试的汉字!"
l = len(s)

ss = ""

for i=1 To l

c = "chr(" & asc(mid(s,i,1)) & ")&"

ss = ss&c

next

ss = left(ss,len(ss)-1)

InputBox s,"汉字测试",ss

这样就行了,for循环会遍历s的字符串,然后挨个转换成ANSI码然后连接起来。

chinese-vbstest.jpg

转换的这个直接输出就可以了,实现中文无障碍输出。

输出的是chr(-10782)&chr(-13625)&chr(-11589)&chr(-18738)&chr(-11325)&chr(-16204)&chr(-19742)&chr(-13612)&chr(-19004)&chr(-17734)&chr(-10282)&chr(-23647)

复制下来,重新写个UTF-8编码的脚本,写入

msgbox chr(-10782)&chr(-13625)&chr(-11589)&chr(-18738)&chr(-11325)&chr(-16204)&chr(-19742)&chr(-13612)&chr(-19004)&chr(-17734)&chr(-10282)&chr(-23647)

测试成功!

最终品

测试、修改的完成品

转换完成后,点击确定即可复制,不用按Ctrl+C。

Dim s

s = inputbox("Change Word to ANSI","Change ANSI","Input Here")

If s = "" then

s = ""

Else

Dim l,ss,c

l = len(s)

ss = ""

for i=1 To l

c = "chr("&asc(mid(s,i,1))&")&"

ss = ss&c

next

Dim m,wsShell

ss = left(ss,len(ss)-1)

m = msgbox("Click Yes to copy,Text:"&vbCrlf&ss,vbInformation+vbOKCancel+vbDefaultButton1,"Change ANSI")

If m = "1" Then

Set wsShell = CreateObject("WScript.Shell")
wsShell.Run "mshta vbscript:ClipboardData.SetData("&chr(34)&"text"&chr(34)&"," &Chr(34)& ss &Chr(34)& ")(close)",0,True

Else

ss = ""

End If

End If
评论