PowerShell で文字化けが起きる場合は、原因のほとんどが「文字コード設定の不一致」です。結論としては、PowerShell の出力エンコードを UTF-8 に統一し、Shift-JIS のファイルは読み書き時に明示的に指定することで解決できます。さらに、コンソールのコードページとフォントを適切に設定すれば、日本語の文字化けは安定して防げます。以下で、原因から具体的な修正手順まで順番に解説します。
PowerShell が文字化けする主な原因
PowerShell の文字化けは、PowerShell 自体の不具合ではなく、文字コードのズレによって発生します。PowerShell は内部では Unicode を扱っていますが、コンソール表示やファイル入出力では別のエンコードが使われるため、設定が揃っていないと日本語が崩れます。
主な原因は次の通りです。
| 原因 | 内容 |
|---|---|
| 出力エンコードの不一致 | UTF-8 と Shift-JIS が混在している |
| コンソールのコードページ | Windows が CP932(Shift-JIS)になっている |
| フォントの問題 | 日本語非対応フォントを使用している |
| ファイルの保存形式 | スクリプトやCSVの文字コードが統一されていない |
特に「UTF-8 のファイルを Shift-JIS 環境で表示する」場合に文字化けが起きやすくなります。
PowerShell の出力を UTF-8 に統一する方法
最も安定する対処法は、PowerShell の出力を UTF-8 に固定することです。まず現在の設定を確認します。
|
1 |
[Console]::OutputEncoding |
UTF-8 に変更するには次を実行します。
|
1 |
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 |
さらに、Out-File の既定エンコードも UTF-8 にします。
|
1 |
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8' |
毎回手動で設定しないように、PowerShell プロファイルへ登録します。
|
1 |
notepad $PROFILE |
開いたファイルに以下を追加します。
|
1 2 |
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8' |
これで PowerShell 起動時から UTF-8 が自動適用されます。
Shift-JIS ファイルを正しく扱う方法
業務環境では Shift-JIS の CSV やテキストを扱うことがあります。その場合は、読み込みと保存の際にエンコードを明示的に指定します。
Shift-JIS で読み込む場合です。
|
1 |
Get-Content sample.txt -Encoding Shift_JIS |
Shift-JIS で保存する場合は次を使用します。
|
1 |
"テスト" | Out-File sample.txt -Encoding Shift_JIS |
エンコードを省略すると既定値が使われ、環境によっては文字化けの原因になります。Shift-JIS を扱う場合は必ず指定します。
コンソールのコードページを UTF-8 に変更する
Windows の既定コードページが Shift-JIS のままだと、UTF-8 出力が崩れることがあります。現在のコードページは次で確認できます。
|
1 |
chcp |
UTF-8 に変更するには以下を実行します。
|
1 |
chcp 65001 |
ただし、PowerShell 7 以降や Windows Terminal を使用している場合は、通常この設定は不要です。
フォント設定を見直す
文字コードが正しくても、フォントが日本語非対応だと表示が崩れます。次のフォントを使用すると安定します。
- Cascadia Mono
- Consolas
- メイリオ
- 游ゴシック
Windows Terminal を使う場合は、設定画面からプロファイルごとにフォントを変更できます。

UTF-8 と Shift-JIS を混在させない運用ルール
実務では「混在しないこと」が最も重要です。次のルールを決めるとトラブルが減ります。
- 新規スクリプトは UTF-8 で統一する
- 外部システム連携のみ Shift-JIS を使用する
- ファイル入出力では必ず -Encoding を指定する
- エディタの保存形式を UTF-8 に固定する
特に CSV 処理では、Export-Csv や Import-Csv のエンコード指定を忘れないようにします。
よくある質問(Q & A)
- UTF-8 にしても文字化けが直らないのはなぜですか?
-
コンソールのコードページやフォントが原因の可能性があります。Windows Terminal の使用と UTF-8 設定を確認してください。
- PowerShell 5 と PowerShell 7 で違いはありますか?
-
PowerShell 7 は UTF-8 が標準のため、文字化けが起きにくくなっています。可能であれば 7 の利用をおすすめします。
- CSV だけ文字化けするのはなぜですか?
-
Export-Csv の既定エンコードが環境依存だからです。-Encoding utf8 または Shift_JIS を明示してください。
まとめ
PowerShell の文字化けは、文字コード設定の不一致が原因です。出力を UTF-8 に統一し、Shift-JIS ファイルは明示的に指定することで解決できます。さらに、コードページとフォントを適切に設定すれば、日本語表示は安定します。最も重要なのは、UTF-8 を標準にし、エンコードを省略しない運用を徹底することです。


