🫠

PowerShell で Unicode 文字が文字化けする

2024/10/05に公開

問題の概要

ターミナルの出力のうち、Unicode 文字が文字化けしてしまいます。

環境:

  • OS: Windows11 Home。Ubuntu では発生しないことを確認済み。
  • シェル: PowerShell でも GitBash でも文字化けする
  • ターミナル: Windows Terminal

試したがうまくいかなかったこと

chcp コマンドでコードポイントの確認と変更ができます。913 なら shift JIS であり、65001 なら utf-8 であることが知られています。

chcp 65001 を実行すると解決しそうだと思って試しましたが、上手くいきませんでした。chcp の出力を見る限り shift JIS になっているせいで文字化けが発生しているのは間違いないようなので、なぜ効かないのかはわかりません。

解決した方法

以下を $Profile に追記したら解決しました。

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding

参考: PowerShell 7のコードページと$OutputEncodingと[Console]::OutputEncodingについて

Discussion