今回は「Windows 10」環境でVBScriptのプログラムを作るとmsgboxが文字化けする現象に関して、その原因と対応方法を紹介していきます。
文字化けの再現と原因
当項では、実際に文字化けを再現し、その原因を解説します。
文字化けの再現
まずは文字化けを再現させてみましょう。
- Windows10環境でメモ帳を起動します。
- 日本語のメッセージボックスを表示する簡易プログラムを作成します。
- ファイル名に拡張子.vbsを指定して保存します。
- 作成したvbsファイルを実行します。
尚、上記手順2で作るサンプルプログラムは以下のような処理です。
VBScriptを嗜む人にとっては疑問を挟む余地のない、非常にシンプルなプログラムです。
そして、上記手順の4で、このプログラムを実行すると以下のようなメッセージボックスか表示されると思います。
文字が化けています。
これが今回の記事の現象です。
文字化けの原因
Windows10から、テキストファイルを作成した際に使われる標準の文字コードが「UTF-8」に変更されました。
※正確にはWindows10のVer1903から標準の文字コードが「ANSI(日本語WindowsではS-JISと同じ)」から「UTF-8」に変わりました。
因みにWindows7までは、標準の文字コードは「S-JIS」でした。
また、日本語の文字はVBScriptの場合「S-JIS」しか対応していません。
その為、Windows10環境で新しくテキストファイルを作成し、プログラム内で日本語の文字を使用すると、その日本語がプログラム内部で文字化けします。
msgboxのように表に出力される処理であれば文字化けによる異常はすぐに気付けますが、プログラム内部で日本語の文字列を不等号で比較するといった処理をしている場合は、謎のエラーが出たり、想定した処理結果にならずに、この文字コード起因の文字化けが発生することを知らない場合に、原因の解明に非常に時間が掛かる場合もあります。
これがWindows10でVBScriptが文字化けする原因です。
因みに、元々Windows7やそれ以前の環境で作成した、文字コードに「S-JIS」が使用されているVBSファイルをWindows10環境に移動させてきて実行する分には文字化けは発生しません。
VBSファイルをWindows10環境に移動させてくるだけでは、勝手に文字コードが変わることはないからです。
Windows10環境で文字化けを回避する方法
当項では、Windows10環境でVBSファイルを作成する際に文字化けを回避する方法を紹介します。
VBSファイル作成時に文字コードを「ANSI」に変更する(メモ帳の場合)
Windows10環境で新しくVBSファイルを作成した場合は、最初にウィンドウ上部の[ファイル]→[名前を付けて保存]などを選択し、保存先やファイル名を指定するダイアログを表示します。
ダイアログの下部で「文字コード」の選択ができます。
ここで「ANSI」を選択して保存します。
文字コードを変更したVBSファイルを実行すると、文字化けせずにメッセージボックスが表示されます。
最後に
今回はWindows10環境でVBScriptファイルを実行すると文字化けが発生する原因と、その対策を紹介しました。
VBScriptが日本語が「S-JIS」にしか対応していないという仕様や、新しいWindows10ではテキストファイル作成時の文字コードの初期値が「UTF-8」になっていることを知らないと、文字化けする原因がわからず困惑します。
また、記事内でも書きましたが、プログラム内部の日本語もすべて文字化けするために、プログラムを実行すると、プログラムの構文や処理的に何も問題がない部分で実行時エラーが発生するために、その原因の究明にも非常に時間が掛かります。
※現に私も昔ハマったことがありました。
今回の記事がそういったケースで助けになれば幸いです。
今回も読んでいただきましてありがとうございました。
それでは皆さまごきげんよう。