我有以下代码来读取文本文件:
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 无法读取这个简单的文本文件有什么原因吗?我看不到文件权限有任何问题。
ÿþ是字节顺序标记一个的UTF-16小字节序编码的文件。UTF-16(与 ASCII/ANSI 不同)为一个字符使用两个字节而不是一个字节。但是,该OpenTextFile方法默认将文件读取为 ASCII 文件,因此每个 2 字节字符都被解释为两个单独的字符。
从文档:
句法
Run Code Online (Sandbox Code Playgroud)object.OpenTextFile(filename[, iomode[, create[, format]]])参数
[...]
格式
可选。用于指示打开文件格式的三个Tristate值之一(TristateTrue = -1 以 Unicode 格式打开文件,TristateFalse = 0 以 ASCII 格式打开文件,TristateUseDefault = -2 以系统默认值打开文件)。如果省略,则文件以 ASCII 格式打开。
读取文件时指定正确的编码,问题就会消失:
Set oFile = FSO.OpenTextFile(InputFile, 1, False, -1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3051 次 |
| 最近记录: |