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

Vb6 使用TriStateUseDefault时,如何确定文件编码,vb6,filesystemobject,Vb6,Filesystemobject,我有一些代码,它使用fileSystemObject打开一个文件,然后使用OpenAsTextStream获取一个流进行读取。为了处理ASCII和Unicode文件,我一直使用TriStateUseDefault-2作为第二个参数。但我遇到了一个文件的情况,它肯定是ASCII,没有特殊的2字节头来开始文件,没有BOM表。但该文件似乎被解释为Unicode。当OpenAsTextStream方法被传递到TriStateUseDefault时,它是否会对文件内容进行更有趣的检查,以尝试猜测文件是否为

我有一些代码,它使用fileSystemObject打开一个文件,然后使用OpenAsTextStream获取一个流进行读取。为了处理ASCII和Unicode文件,我一直使用TriStateUseDefault-2作为第二个参数。但我遇到了一个文件的情况,它肯定是ASCII,没有特殊的2字节头来开始文件,没有BOM表。但该文件似乎被解释为Unicode。当OpenAsTextStream方法被传递到TriStateUseDefault时,它是否会对文件内容进行更有趣的检查,以尝试猜测文件是否为Unicode

例如,问题文件有几行文本,其中一行包含如下内容: ... ^123^.... 并将该文件视为Unicode

当我将该行的文本更改为…^1234^。。。FSO将该文件视为ASCII

如果fso猜测编码,是否有任何方法可以避免这种边缘情况,即它猜测错误

另一个注意事项-此文件确实具有扩展ASCII字符,包括thorn字符ASCII 254

示例代码:

TriStateUseDefault = -2
Set fso = CreateObject("Scripting.FileSystemObject")
set objFIL = FSO.GetFile("myfile.txt")
Set TS =objFIL.OpenAsTextStream(ForReading, TristateUseDefault)
strLine = TS.ReadLine

FSO可能正在使用API函数ISTEXTINCODE。有趣的参数是lpiResult on input-它显著地改变了行为。非常有趣-这很有意义,并且ISTEXTINCODE引用非常有用。谢谢