Programming Field

バッチファイル内の文字出力をUTF-8で行う方法 - Windowsコマンド実用例

バッチファイルで日本語などを含む文字列を正しくUTF-8で出力したい場合、コードページの設定が重要です。特に外部ファイルへの出力や、UTF-8対応ツールとの連携時に有効です。ここでは Chcp コマンドによる設定方法と注意点を解説します。

使用コマンド

  • Chcp - コンソールの文字コード(コードページ)を変更
  • Echo - テキスト出力

基本的な書き方

@echo off
chcp 65001

rem UTF-8でファイルに出力
echo これはUTF-8で出力された行です> out.txt

rem 必要に応じて元のコードページに戻す(例:日本語環境なら932)
chcp 932

chcp 65001 はUTF-8のコードページに切り替えるコマンドです(65001 はWindowsでの番号)。

補足事項

  • UTF-8で出力されたファイルにはBOM(Byte Order Mark)は付きません。必要であれば別途付加してください。
  • プロンプト内からバッチファイルを実行したり、バッチファイルから別のバッチファイルを実行したりする場合などは、変更したコードページは元に戻りません。必要に応じてコードページを元に戻す必要があります。
  • MoreType で内容を確認する場合、文字化けに注意してください。Chcp で 65001 に切り替えている場合は UTF-8 の内容のみ確認できます。
  • chcp 65001 に対応していない古いアプリやツールでは、文字化けの原因になる場合があります。
  • Mode コマンドでもコードページの切り替えが可能です。画面をクリアしないという特徴があるので状況に応じて使い分けることができます。
    mode CON cp select=65001 > NUL

応用例

  • 複数行をUTF-8ファイルに書き出す:
    @echo off
    chcp 65001 >NUL
    (
      echo ヘッダー1,ヘッダー2
      echo データ1,データ2
      echo データ3,データ4
    ) > export_utf8.csv
    chcp 932 >NUL

    「( )」を使うことで複数のコマンドをひとかたまりにできますが、それをリダイレクトすることで、まとめられたコマンドの出力すべてがファイルに出力されます。

  • 既存の文字コード確認用途:

    バッチファイルの文字コードを調べるには WSL や Git Bash などで使える file コマンドなどの外部ツールが必要です。Windows単体では直接確認できません。

関連項目