VBA, VBScript の文字列の文字コード

文字列はUnicodeで扱われている。半角仮名4字の文字列のバイト長をLenBで取得すると8が返ってきたし、次のようなスクリプトを実行してみたところ、Unicode特有の文字をファイルに出力することができた*1

Set fso = CreateObject("Scripting.FileSystemObject")
'スクリプト自身の名前から親ディレクトリーを取得し、得られたディレクトリー内にファイルを作る。
'わざわざそこまでやらないでもいいのだけれど、一応……。
scrParentDirPath = fso.GetParentFolderName(WScript.ScriptFullName)
destFilePath = scrParentDirPath & "\" & "test0001.txt"

s = ChrW(&H9DD7)
s = s & "/" & s
Set os = fso.CreateTextFile(destFilePath, True, True)
os.WriteLine s
os.Close

Windowsの内部はほとんどUnicode化されているわけで、不思議な話ではないけれど、ちと嬉しい。
VBScriptはUTF16で保存してもスクリプトが正しく実行された。ただ、UTF16テキストファイルを扱うときに考える、Little Endian(以下LE)、Big Endian(以下BE)の別、ファイル先頭のByte Order Mark(以下、BOM)の有る無しで、ちょっとばかしへんな動作が。
1)LE、BOM有り。
2)LE、BOM無し。
3)BE、BOM有り。
4)BE、BOM無し。
で、1)2)4)の3種類は実行されたのに、3)はエラーが表示された。
……なんでだろうか? BOM付きでエラーが表示されるというのが不思議でならない。3)が実行されて、4)で問題が出るならわかるのだけれども……。

MsgBox "ほげ"

というだけの短いスクリプトだから判断材料が少なかったということなのか? しかしBOMが先頭にあるというのに……。BOM無しのファイルを他のエンコードと間違えるというのは別に気にならないのだが、BOM有りで間違うのは……。

*1:U+9DD7は森鴎外の「鴎」の字の正字。区の×のところが口三つとなっている。