「PowerShellでテキストファイルの中身を見たら、なぜか日本語が文字化けしている…」
そんな経験はありませんか? この文字化け問題は、特に古いバージョンのPowerShellでよく見られる、開発者やシステム管理者にとっての悩みの種です。しかし、実はその原因と解決策はとてもシンプルです。
今回は、PowerShellの文字化けが起きる原因を解き明かし、初心者でも簡単にできる具体的な対策方法を2つご紹介します。
なぜ文字化けが起きるのか?
この問題の最大の原因は、PowerShellが扱うデフォルトの文字コードにあります。
Windowsで使われる一般的な文字コードは「Shift-JIS」ですが、Web開発や多くのモダンなツールでは「UTF-8」が主流です。PowerShellは、これらの異なる文字コードが混在することで、正しく文字を認識できなくなり、文字化けを引き起こします。
特に、Windows 10に標準搭載されているPowerShell 5.1は、デフォルトの文字コードがUTF-8ではないため、この問題が頻繁に発生します。
対策1:根本的な解決策!PowerShell 7に乗り換えよう(最も推奨)
もしあなたがまだPowerShell 5.1を使っているなら、これが最も簡単で根本的な解決策です。
PowerShell 7以降は、デフォルトの文字コードがUTF-8に変更されました。これにより、UTF-8で記述されたファイルやコンソール出力で文字化けが発生する可能性が大幅に低くなります。
PowerShell 7のインストール方法
-
にアクセスし、最新版のインストーラー(GitHubのリリースページ PowerShell-7.x.x-win-x64.msiなど)をダウンロードします。 -
インストーラーを実行し、指示に従ってインストールするだけです。
これで、PowerShell 7を使えば、文字コードの問題から解放されます。
対策2:現在のPowerShellで設定を変更する
PowerShell 5.1を使い続けたい、または一時的に設定を変更したい場合は、以下の方法を試してみてください。
方法A: $OutputEncodingを設定する
PowerShellがファイルや外部コマンドにデータを渡す際の文字コードをUTF-8に設定します。
この設定は、現在のセッション(開いているウィンドウ)でのみ有効です。
方法B: プロファイルに設定を追加して恒久化する
PowerShellを起動するたびに設定が自動で適用されるように、プロファイルファイルにコマンドを追加します。
-
まず、プロファイルファイルのパスを確認します。
$PROFILE -
プロファイルファイルが存在しない場合は作成します。
if (-not (Test-Path $PROFILE)) { New-Item -Path $PROFILE -ItemType File -Force } -
プロファイルファイルをメモ帳などで開きます。
notepad $PROFILE -
以下の行を追加して保存します。
$OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::InputEncoding = [System.Text.Encoding]::UTF8[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
これで、PowerShellを起動するたびに、文字コードが自動でUTF-8に設定されます。
まとめ
PowerShellの文字化け問題は、多くの場合、文字コードの設定が原因です。
もしあなたが文字化けに悩まされているなら、迷わずPowerShell 7への乗り換えをおすすめします。これにより、今後文字コードの問題で時間を無駄にすることがなくなるでしょう。