バッチファイルが文字化けする原因

old-letters プログラミング

バッチファイルを実行したときに、以下のように文字化けして表示されることがあります。

unmatch-encode

文字化けの原因について説明します。

なぜ文字化けするのか

文字化けする原因は、バッチファイルとコマンドプロンプトの文字コードが一致していないことが原因です。

以下の2つの文字コードが一致していない場合に、文字化けします。

  • バッチファイル
  • コマンドプロンプト

バッチファイルの文字コードを確認する

メモ帳でバッチファイルを開きます。

メモ帳の右下で、バッチファイルの文字コードを確認できます。

bat-open-notepad

メモ帳の右下に何もないときは、ステータスバーが表示されていないからです。

ステータスバーを表示するには、『表示』→『ステータスバー』をクリックします。

notepad-view-statusbar

コマンドプロンプトの文字コードを確認する

コマンドプロンプトで、文字コードを確認するには『chcp』コマンドを使います。

コマンドプロンプトを開いて、『chcp』と入力して『Enter』を押せば、現在の文字コードが表示されます。

check-chcp

実行した結果『現在のコード ページ:932』と表示されました。

文字コードが直接表示されるわけではなく、文字コードに対応する識別子が表示されます。

『932』は、『Shift-JIS』です。

ちなみに『UTF-8』の識別子は、『65001』になります。

  • 932:Shift-JIS
  • 65001:UTF-8

それ以外は、Micorsoftのページで確認することができます。

文字コードを合わせる

文字コードが、バッチファイルは『UTF-8』、コマンドプロンプトは『Shift-JIS』なので文字化けしてたわけです。

文字化けを解決するために、バッチファイルの文字コードを『Shift-JIS』に変更します。

バッチファイルをメモ帳で開き、『名前をつけて保存』で文字コードを『ANSI』で保存します。

bat-save-as

メモ帳では、文字コードに『Shift-JIS』がないですが、『ANSI』と『Shift-JIS』はほぼ同じなので問題ありません。

これで、バッチファイルもコマンドプロンプトも『Shift-JIS』になりました。

バッチファイルを実行すれば、問題なく表示されるはずです。

コマンドプロンプトの文字コードを変更する

参考に、コマンドプロンプトの文字コードを変更する方法についても説明します。

コマンドプロンプトの文字コードを変更するときも『chcp』コマンドを使います。

『chcp 65001』のように『chcp+スペース+識別子』と入力してください。

change-chcp-65001

コマンドプロンプトの文字コードは、コマンドプロンプトを閉じれば元に戻るので注意が必要です。

まとめ

バッチファイルで文字化けするときは、バッチファイルとコマンドプロンプトの文字コードが原因です。

それぞれの文字コードを確認してみてください。

コマンドプロンプトは、Shift-JISであることが多いので、バッチファイルがUTF-8になっていることが原因であることが多いです。

バッチファイルの文字コードをShift-JISで保存しなおしてみてください。

メモ帳の場合は『ANSI』にすれば大丈夫です。

バッチファイルを使えば、いろいろな作業を効率化することができます。どんどん効率化していきましょう。

タイトルとURLをコピーしました