よく忘れるWSF(3)~文字エンコードはShift-JISかUTF-16

WSFはXML形式なので、ついつい下記のようなことをやってしまう。

<?XML version="version" standalone="yes" encoding="UTF-8"?>
<package>
  <job>
    <script language="VBScript">
    <![CDATA[
        WScript.stdout.writeLine "おはよう日本"
    ]]>
    </script>
  </job>
</package>

当然、文字コードはUTF-8だが、ohayo1.wsfとして保存し、下記のようにコマンドラインで実行しても問題ない

C:\> cscript //nologo ohayo1.wsf

おはよう日本

しかし、このファイルのohayo2.wsfとohayo.vbsの2つに分割してUTF-8で保存すると厄介なことになる。

まず、ohayo2.wsf は、こんな感じ。

<?XML version="version" standalone="yes" encoding="UTF-8"?>
<package>
  <job>
    <script language="VBScript" src="ohayo.vbs" />
  </job>
</package>

そしてohayo.vbsは、こんな感じの内容をUTF-8で保存する。

WScript.stdout.writeLine "おはよう日本"

すると、実行結果は次のようになる。

C:\>cscript //nologo ohayo2.wsf
縺翫・繧医≧譌・譛ャ

思いっきり、文字化けである。この現象を回避するには、ohayo.vbsをShift-JISかBOM付のUTF-16で保存すればいい。

このごろは、emacsのデフォルトコードをUTF-8にしているので、ときどき、びっくりすることがある。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

なるほど(納得、参考になった、ヘー)

この記事へのコメント

この記事へのトラックバック