2012/08/25

JScriptをUTF-8で書きたい

コマンドラインで実行するJScriptをUTF-8で書きたいという、どうかしてる欲求が湧き上がりました。
とりあえずやってみようと、ファイルのエンコードをUTF-8にしてスクリプトを書いてみます。
test.js
WScript.Echo("ほげ");
実行結果:Microsoft JScript コンパイル エラー: 終了していない文字列型の定数です。
ダメです。マルチバイトを上手く解釈してくれません。弱った。

そういえば、wsfならエンコードを指定できます。試してみましょう。
test.wsf
<?xml version="1.0" encoding="utf-8" ?>
<package>
  <job>
  <?job error="True" debug="True" ?>
    <runtime/>
    <script language="JScript">
      <![CDATA[
      WScript.Echo("ほげ");
      ]]>
    </script>
  </job>
</package>
実行結果:ほげ
上手く行きました。

ちょっとしたスクリプトならこれでいいのですが、多少気合を入れる時には、ファイルを分割してインクルードしたくなるでしょう。
test.wsf
<?xml version="1.0" encoding="utf-8" ?>
<package>
  <job>
  <?job error="True" debug="True" ?>
    <runtime/>
    <script language="JScript" src="./test.js"/>
    <script language="JScript">
      <![CDATA[
      main();
      ]]>
    </script>
  </job>
</package>

test.js
function main()
{
    WScript.Echo("ほげ");
}
実行結果:Microsoft JScript コンパイル エラー: 終了していない文字列型の定数です。
ムキー、なんだよー、とならずに冷静に。
こういうこういう時は、ファイルに「BOM」をつけるといいですよ。

Google Analytics