🫠
PowerShell で Unicode 文字が文字化けする
問題の概要
ターミナルの出力のうち、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