我有一些代码使用 fileSystemObject 打开文件,然后使用 OpenAsTextStream 获取流进行读取。为了处理 ASCII 和 Unicode 文件,我一直使用 TriStateUseDefault (-2) 作为第二个参数。但是我遇到了一个绝对是 ASCII 文件的情况(没有特殊的 2 字节标题来启动文件,没有 BOM)。但该文件似乎被解释为 Unicode。当 OpenAsTextStream 方法通过 TriStateUseDefault 时,它是否会对文件内容进行更“有趣”的检查以尝试猜测文件是否为 Unicode?
例如,问题文件有几行文本,其中一行包含如下内容:“... ^123^....”并将文件视为 Unicode。
当我将该行的文本更改为“...^1234^...”时,FSO 将文件视为 ASCII。
如果 fso 正在猜测编码,是否有办法避免这种猜测错误的极端情况?
另一个注意事项 - 此文件确实具有“扩展 ASCII”字符,包括“刺”字符(ascii 254)。
示例代码:
TriStateUseDefault = -2
Set fso = CreateObject("Scripting.FileSystemObject")
set objFIL = FSO.GetFile("myfile.txt")
Set TS =objFIL.OpenAsTextStream(ForReading, TristateUseDefault)
strLine = TS.ReadLine