为什么 VBS 不能正确读取此文本文件?

use*_*019 2 vbscript

我有以下代码来读取文本文件:

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 
Run Code Online (Sandbox Code Playgroud)

ClientVersion.txt 的内容为:

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 
Run Code Online (Sandbox Code Playgroud)

当我运行 VBS 代码时,我得到以下信息:

VBS txt文件读取

如果我在同一位置创建一个具有相同内容的新文本文件,它工作正常。VBS 无法读取这个简单的文本文件有什么原因吗?我看不到文件权限有任何问题。

Ans*_*ers 5

ÿþ字节顺序标记一个的UTF-16小字节序编码的文件。UTF-16(与 ASCII/ANSI 不同)为一个字符使用两个字节而不是一个字节。但是,该OpenTextFile方法默认将文件读取为 ASCII 文件,因此每个 2 字节字符都被解释为两个单独的字符。

文档

句法

object.OpenTextFile(filename[, iomode[, create[, format]]])
Run Code Online (Sandbox Code Playgroud)

参数
[...]
格式
    可选。用于指示打开文件格式的三个Tristate值之一(TristateTrue  = -1 以 Unicode 格式打开文件,TristateFalse = 0 以 ASCII 格式打开文件,TristateUseDefault = -2 以系统默认值打开文件)。如果省略,则文件以 ASCII 格式打开。

读取文件时指定正确的编码,问题就会消失:

Set oFile = FSO.OpenTextFile(InputFile, 1, False, -1)
Run Code Online (Sandbox Code Playgroud)