fileSystemObject を使用してファイルを開き、OpenAsTextStream を使用して読み取り用のストリームを取得するコードがあります。ASCII および Unicode ファイルを処理するために、2 番目の引数として TriStateUseDefault (-2) を使用しています。しかし、私は間違いなく ASCII であるファイル (ファイルを開始するための特別な 2 バイトのヘッダーや BOM がない) の状況に遭遇しました。しかし、ファイルは Unicode として解釈されているようです。OpenAsTextStream メソッドに TriStateUseDefault が渡された場合、ファイルの内容をより「興味深い」検査を行って、ファイルが Unicode であるかどうかを推測しようとしますか?
たとえば、問題のファイルには数行のテキストがあり、そのうちの 1 行には "... ^123^...." のようなものが含まれており、ファイルは Unicode として扱われていました。
その行のテキストを "...^1234^..." に変更すると、FSO はファイルを ASCII として扱いました。
fsoがエンコーディングを推測している場合、推測が間違っているようなエッジケースを回避する方法はありますか?
もう 1 つの注意事項 - このファイルには、「とげ」文字 (ASCII 254) を含む「拡張 ASCII」文字が含まれています。
サンプルコード:
TriStateUseDefault = -2
Set fso = CreateObject("Scripting.FileSystemObject")
set objFIL = FSO.GetFile("myfile.txt")
Set TS =objFIL.OpenAsTextStream(ForReading, TristateUseDefault)
strLine = TS.ReadLine