最近、Windowsのパソコンで使用するためのバッチフアイルを作成していて、文字コードが原因で処理が失敗してしまうことがあったので、紹介します。
作成したバッチファイルを実行した際にエラーが起きたり文字化けが発生する際は、もしかしたら文字コードが関係しているかもしれません。
全てのエラー原因が文字コードに関係しているわけではありませんが、原因の一つとして見てもらえればと思います。
とくにバッチファイルをWindows標準機能のメモ帳で作成していて、英数字以外の文字を処理の中で使用している方は特に注意した方が良いです。
注意ポイント
Windows 10 Ver.1903のアップデート以降で、メモ帳で「名前を付けて保存」する際の文字コードが「ANSI」から「UTF-8」に変わりました。
文字コードとは
簡単に説明すると入力した文字や、記号などをコンピュータで扱えるように、一文字一文字に固有の識別番号を与えて区別できるようにした対応表を文字コードと呼びます。
パソコンは0と1しか認識できないので、入力した文字は0と1の組み合わせによてパソコンに認識されます。
また、その逆に0と1の組み合わせから人が理解できる「あ」のような文字に変換されます。
その際の切り替えを文字エンコード・デコードと呼んでいます。
文字コードの確認と変更方法
文字コードの確認方法と変更方法について、紹介します。
文字コードの確認方法
文字コードの確認方法は複数ありますが、今回はWindowsの標準ソフトであるメモ帳を使用しての確認方法を紹介します。
メモ帳を開いて、右隅を確認することで現在の文字コードを確認できます。
今回は、「ANSI」だということが分かります。
文字コードの変更方法
文字コードの変更方法は、名前をつけて保存する際に、右下に文字コードが選べるプルダウンがあるので、変更する文字コードを選択して保存するだけです。
サンプルバッチファイルを使用しての確認
実際にサンプルバッチファイルを使用して、文字コードによる文字化けが発生するかについて確認します。
実際に試して確認するのが一番だと思うので、試してみてください。
以下にサンプルで使用したバッチファイルを紹介します。
使用するサンプルバッチファイル
動作確認で使用するサンプルバッチファイルは以下です。
処理の内容としては、コマンドプロンプト上に「あいうえお」と表示させます。
最後に「pause」がついているのは、処理の実行終了後にコマンドプロンプトが自動で終了しないようにするためです。
サンプルバッチファイル
@echo off
echo あいうえお
pause
UTF-8の場合
文字コードが「UTF-8」のため、文字化けが発生しました。
今回は「あいうえお」という日本語を使用したため、文字化けしましたが「aiueo123」のように半角英数字のみを使用すれば、文字化けはしません。
ANSIの場合
文字コードが「ANSI(Shift-JIS)」の場合、正常に表示できました。
まとめ
普段はあんまり意識しない文字コードかもしれませんが、バッチファイルを作成する際は意識をする必要があります。
バッチファイルの中で英数字以外を使用する際は、文字化けをしてしまうので「ANSI(Shift-JIS)」で作成する必要があります。
「UTF-8」で作成する必要がある場合は、半角英数字しか使用しないなどの工夫が必要です。