バッチファイル内の文字出力をUTF-8で行う方法 - Windowsコマンド実用例
バッチファイルで日本語などを含む文字列を正しくUTF-8で出力したい場合、コードページの設定が重要です。特に外部ファイルへの出力や、UTF-8対応ツールとの連携時に有効です。ここでは Chcp コマンドによる設定方法と注意点を解説します。
使用コマンド
基本的な書き方
@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)は付きません。必要であれば別途付加してください。
- プロンプト内からバッチファイルを実行したり、バッチファイルから別のバッチファイルを実行したりする場合などは、変更したコードページは元に戻りません。必要に応じてコードページを元に戻す必要があります。
- 環境に依存せずに戻す方法の例はChcpコマンドのサンプルをご確認ください。
- More や Type で内容を確認する場合、文字化けに注意してください。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単体では直接確認できません。