使用TriStateUseDefault时,如何确定文件编码

时间:2013-02-14 02:28:12

标签: vb6 filesystemobject

我有一些代码使用fileSystemObject来打开文件,然后使用OpenAsTextStream来获取用于读取的流。我一直在使用TriStateUseDefault(-2)作为第二个参数来处理ASCII和Unicode文件。但我遇到的情况是一个绝对是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

0 个答案:

没有答案