【问题标题】:Why does VBS not read this text file correctly?为什么 VBS 不能正确读取此文本文件?
【发布时间】:2019-02-21 05:06:09
【问题描述】:

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

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 无法读取这个简单的文本文件有什么原因吗?我看不到文件权限有任何问题。

【问题讨论】:

    标签: vbscript


    【解决方案1】:

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

    来自documentation

    语法

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

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2014-06-24
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    相关资源
    最近更新 更多