【初心者向け】バッチファイルの文字化けする原因と解決策を解説

スポンサーリンク
この記事は約4分で読めます。

※ この記事にはアフィリエイトリンクが含まれます

バッチファイルを使ってちょっとした自動化をしようとしたとき、「日本語が文字化けして読めない・・・」と困った経験はありませんか?

特に、echo で日本語を出力したり、ファイルの読み書きを行ったときに「???」や「�」のような表示になることがあります。

この記事では、バッチファイルで文字化けが起きる原因と、その確実な対処法をわかりやすく解説します。初心者の方でも安心して読めるよう、基礎から順を追って説明していきます。

よくある文字化けの例

まずは、どのようなケースで文字化けが起きるのかを見てみましょう。

  • バッチファイル内の echo 日本語 が「???」になる
  • コマンドプロンプト上の出力が意味不明な記号で表示される
  • 外部ファイルを読み込んだ際、日本語の部分だけが崩れる
  • 保存して開き直すと文字がおかしくなる

どれも、原因は「文字コードの不一致」です。

原因1:文字コードの違い

Windowsの「コマンドプロンプト(cmd.exe)」は、もともとShift_JIS(CP932)という文字コードを使っています。

一方、最近のエディタ(例:VSCodeやWindowsメモ帳)は、デフォルトでUTF-8でファイルを保存します。
この違いが原因で、バッチファイル内の日本語が文字化けしてしまうのです。

解決策:バッチファイルを正しい文字コードで保存する

  • Shift_JIS で保存する
  • または、UTF-8(BOMなし)+ chcp 65001 を併用する

エクスプローラーから「名前をつけて保存」する場合は、保存ボタンの左側にある「エンコード」から文字コードを選択できます。

VSCodeでの保存方法

1. 右下の「UTF-8」表示をクリック

2. 「エンコードを再選択」(またはReopen With Encording)→「Shift_JIS」や「UTF-8(BOMなし)」を選択

選択後、右下の文字コードが「UTF-8」から選択した文字コードになっていることを確認

3. 再保存する

原因2:コマンドプロンプトの文字コードが合っていない

バッチファイルでUTF-8を使いたい場合、chcp 65001 を明示的に書く必要があります。

解決策:バッチファイルの冒頭に chcp 65001を記述

@echo off
chcp 65001 > nul
echo 日本語を出力します

これにより、コマンドプロンプトがUTF-8で動作するようになり、文字化けを防ぐことができます。

chcp 65001 の設定は実行中のプロンプトにだけ一時的に適用されます。PC全体の設定は変わりません。

原因3:BOM付きUTF-8で保存している

VSCodeやWindowsの一部エディタでは、UTF-8で保存したファイルにBOM(バイトオーダーマーク)が付いてしまうことがあります。

このBOMが原因で、ファイルの先頭に変な文字が表示されたり、うまく動作しなくなることがあります。

解決策:UTF-8(BOMなし)で保存する

  • VSCodeで「UTF-8(BOMなし)」を選択して保存
  • または「Shift_JIS」で保存する

BOM付きファイルは、type コマンドで表示させると先頭に「」のような文字が出てくることがあります。

まとめ

バッチファイルの文字化けは、ほとんどの場合文字コードの不一致が原因です。

  • 基本は Shift_JIS で保存するのが最も安全
  • UTF-8を使うなら、chcp 65001 と BOMなし保存を徹底する
  • 外部ファイルとの整合性にも注意する

バッチファイルは今でも現場でよく使われる自動化手段です。正しく扱えるようになれば、ちょっとした作業を大幅に効率化できますよ。

業務効率化・自動化を武器に転職も視野に入れるなら…

業務効率化スキルを身につけることで、社内SEやIT職にキャリアアップする道も開けます。
転職を考えている方は、IT職に特化した転職エージェントも検討してみてください。

社内SEに興味がある、転職を考えてる方は「社内SE転職ナビ」がおすすめです。

保有求人数は10,000件以上、サイト公開求人数は4,000件以上あるので、会員登録しておくのがおすすめです。

ITに特化した転職サイトまとめ記事はこちらにあるのでぜひご覧ください。

Windows
スポンサーリンク
なんくるをフォローする

コメント

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