小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


VBScriptをUTF-8で保存し、実行するとエラーがでる件とそれに対する対処方法

はじめに

VBScript(.vbs)をUTF-8で保存して実行すると、コンパイルエラーとなり、実行させることができません。
たとえば、以下のような、メッセージを出力するだけのvbsスクリプトを作ります。

hoge.vbs
Main()
Sub Main()
  MsgBox "ほげ"
End Sub

このファイルをShift_JIS形式で保存してcscript.exeから実行すると動作しますが、UTF-8形式で保存して実行すると、コンパイルエラーとなります。

hoge.vbsをUTF-8で保存して実行した場合

cscript hoge.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
hoge.vbs(3, 15) Microsoft VBScript コンパイル エラー: 終了していない文字列型の定数です。

上記のことから、.vbsファイルでは、Shift_JIS範囲外の文字列を出力することができないということになります。
これを回避するためには、.wsfファイルでスクリプトを作成します。wsfファイルの場合、charsetを指定できるため、UTF-8でも問題なく動作させることが可能です。

hoge.wsf
<?xml version="1.0" encoding="utf-8" ?>
<package>
  <job>
    <runtime></runtime>
    <script language="VBScript">
    <![CDATA[
      Main()
      Sub Main()
        MsgBox "ほげ"
      End Sub
    ]]>
    </script>
  </job>
</package>