我有以下代码来读取文本文件:
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 无法读取这个简单的文本文件是否有原因?我看不到该文件的权限有任何问题。
ÿþ
is the 字节顺序标记 https://en.wikipedia.org/wiki/Byte_Order_Mark of a UTF-16 https://en.wikipedia.org/wiki/UTF-16Little Endian 编码文件。 UTF-16(与 ASCII/ANSI 不同)对一个字符使用两个字节,而不是一个字节。但是,那OpenTextFile
方法默认将文件读取为 ASCII 文件,因此每个 2 字节字符都会被解释为两个单独的字符。
来自文档 https://msdn.microsoft.com/en-us/library/314cz14s%28v=vs.84%29.aspx:
Syntax
object.OpenTextFile(filename[, iomode[, create[, format]]])
论点
[…]
format
选修的。三者之一Tristate用于指示打开文件格式的值(三态真= -1 以 Unicode 打开文件,三态错误= 0 以 ASCII 格式打开文件,三态使用默认值= -2 作为系统默认打开文件)。如果省略,文件将以 ASCII 格式打开。
读取文件时指定正确的编码,问题就会消失:
Set oFile = FSO.OpenTextFile(InputFile, 1, False, -1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)