Windows

バッチファイル実行時にエラーが発生する場合や文字化け発生時は文字エンコードを見直そう

最近、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」で作成する必要がある場合は、半角の英数字しか使用しないなどの工夫が必要です。

-Windows
-