我有以下代码来阅读文本文件:
Option Explicit
Dim InputFile
Dim FSO, oFile
Dim strData
InputFile = "C:\Program Files (x86)\AVG\CloudCare\ClientVersion.txt"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.OpenTextFile(InputFile)
strData = oFile.ReadAll
oFile.Close
msgbox strData
ClientVersion.txt的内容是:
CLIENT_VERSION_STRING _T("3.5.2") //
当我运行VBS代码时,我得到了回复:
如果我在同一位置创建具有相同内容的新文本文件,则可以正常工作。有没有理由为什么VBS无法读取这个简单的文本文件?我看不到文件权限的任何问题。
答案 0 :(得分:4)
ÿþ
是byte order mark Little Endian编码文件的UTF-16。 UTF-16(与ASCII / ANSI不同)对一个字符使用两个字节而不是一个字节。但是,OpenTextFile
方法默认将文件读取为ASCII文件,因此每个2字节字符被解释为两个单独的字符。
语法
object.OpenTextFile(filename[, iomode[, create[, format]]])
<强>参数强>
[...]
格式
可选的。三个三态值中的一个用于指示打开文件的格式( TristateTrue = -1以将文件打开为Unicode, TristateFalse = 0以ASCII格式打开文件, TristateUseDefault = -2打开文件作为系统默认值)。 如果省略,文件将以ASCII格式打开。
在读取文件时指定正确的编码,问题将消失:
Set oFile = FSO.OpenTextFile(InputFile, 1, False, -1)