首先,VBScript的脚本源文件得是ANSI编码的,如果保存为UTF-8格式的,执行时可能会报错,比如你语法什么的都没有问题,不过代码中包含汉字串,那么可能执行时就会出现“未结束的字符串常量”之类的错误。
VBScript读取文本文件的话,采用Scripting.FileSystemObject只能读取ANSI格式的文件
Set objTextFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("params.json", 1)
strResponses = objTextFile.ReadAll
objTextFile.Close
如果文件是其他编码格式的,可以采用ADODB.Stream并设置Charset属性,然后 open和loadfromfile 下面的例程也可以读取ansi编码的文件内容
Set args = CreateObject("ADODB.Stream")
With args
.Charset = "GBK"
.Open
.loadfromfile "params.json"
strResponses = .ReadText
End With
Set args = Nothing
注意了,此处Charset的默认值是Unicode,例程中设置的是GBK而不是ansi 因为ansi并不是一个特定的编码格式,windows环境下的不同语言的版本下可能不一样,比如中文简体的ansi可能是GBK,而中文繁体下ansi可能是Big5
另外关于字符串比较,在每种开发语言里都要约定编码格式的,虽然显示起来似乎没有区别,但是字符集不同的字符串比较没有意义的。VBScript源码里如果有汉字串,那么它应该是ansi编码的,你从文件里得到的相应内容如果是其他编码的,比如utf-8的,如果要进行比较,那么需要转换成同样的编码,或者干脆要求提供内容的源文件也是ansi编码的,免得在脚本中还要处理编码转换。