为什么VBS没有正确读取此文本文件?

时间:2016-06-01 09:29:43

标签: 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 

ClientVersion.txt的内容是:

CLIENT_VERSION_STRING   _T("3.5.2") //

当我运行VBS代码时,我得到了回复:

VBS txt file read

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

1 个答案:

答案 0 :(得分:4)

ÿþbyte order mark Little Endian编码文件的UTF-16。 UTF-16(与ASCII / ANSI不同)对一个字符使用两个字节而不是一个字节。但是,OpenTextFile方法默认将文件读取为ASCII文件,因此每个2字节字符被解释为两个单独的字符。

来自documentation

  

语法

object.OpenTextFile(filename[, iomode[, create[, format]]])
     

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

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

Set oFile = FSO.OpenTextFile(InputFile, 1, False, -1)