#6969

kshi
参加者

江村さん、コメントありがとうございます。

勘違いだったようです。いま手元でやってみたら再現しませんでした。
もしかすると私の環境依存(XPとVista)かもしれません。

参考までに、以下の main.jseeとsub.jseeを同じフォルダに置いて、
main.jseeを実行すると、sub.jseeの内容を読み込んで実行します。

■ main.jsee

var DataFileName = ScriptFullName.replace(ScriptName, “sub.jsee”) ;

var TristateUseDefault = -2 //システム デフォルトを使ってファイルを開く
var TristateTrue = -1 //ファイルを Unicode ファイルとして開く
var TristateFalse = 0 //ファイルを ASCII ファイルとして開く

var fso = new ActiveXObject(“Scripting.FileSystemObject”);
if (fso.FileExists(DataFileName)) {
var ts = fso.OpenTextFile(DataFileName, 1, true, TristateUseDefault);
var s = ts.ReadAll();
ts.Close();
}
eval(s);
alert(“mainに戻りました”);

■ sub.jsee

alert(“sub.jseeを実行中”);

いまWindows XPで試した結果は以下の通りでした。

● sub.jsee をシフトJIS で保存した場合
・ システムデフォルトで開く → OK
・ Unicodeとして開く → NG
・ ASCIIファイルとして開く → OK

● sub.jsee をUTF-16LE(BOM付き)で保存した場合
・ システムデフォルトで開く → OK
・ Unicodeとして開く → OK
・ ASCIIファイルとして開く → NG

こうしてみると、「システムデフォルトで開く」にすれば無難そうです。
OpenTextFileの4番目のパラメータを省略すると、TrestateFalse(0)が既定とな
るようですので、TristateUseDefault(-2)を明示することにします。

【参考URL】 なぜか OpenTextFileのほうには具体的な数値がない……。
http://msdn.microsoft.com/ja-jp/library/cc428042.aspx