PowerShellのエンコードをUTF8に変更する

Windows PowerShellでUTF8形式のファイルを表示すると文字化けするので、エンコードをUTF8に変更します。ただ、エンコードをUTF8に変更しただけでは、UTF8(BOMなし)は文字化けしてしまいます。

そこで、Windows PowerShellで設定をするのは面倒なので、PowerShell Coreをインストールすることによって、UTF8(BOMなし)の文字化け問題に対応します。

Windows PowerShellの文字コードをUTF8に設定

一時的にUTF8に設定

現在の文字コードを確認して、UTF8に変更します。

ただし、Windows PowerShellを再起動すると、文字コードはUTF8から元に戻ってしまいます。

$OutputEncoding.EncodingName
$OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
PS C:\Users\dattesar> $OutputEncoding.EncodingName
US-ASCII
PS C:\Users\dattesar> $OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
PS C:\Users\dattesar> $OutputEncoding.EncodingName
Unicode (UTF-8)

常にUTF8に設定する場合

Windows PowerShellの文字コードを常にUTF8に設定する場合は、Windows PowerShell プロファイルを編集します。

Windows PowerShell プロファイルについての詳しい説明は、こちら

Windows PowerShell プロファイルのパスを表示

$profile

パスを表示するだけで、すでにプロファイルが存在するわけではありません。

プロファイルが存在するか確認

test-path $profile

プロファイルが存在する場合は True、存在しない場合は False

プロファイル ファイルを作成

new-item -path $profile -itemtype file -force

プロファイルをメモ帳で開く

notepad $profile

プロファイルを開いたら、以下の内容を追記して、Windows PowerShellを再起動します。

Microsoft.PowerShell_profile.ps1
$OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')

Anaconda(Miniconda)をインストールしている場合

AnacondaやMinicondaをインストールしている場合は、プロファイルパスのフォルダにprofile.ps1という名前のファイルが作成されている場合があります。その時は、profile.ps1に

$OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')

を追記して、Windows PowerShellを再起動します。

問題は、UTF8(BOM付き)

エンコードってすごくややこしいのですが、ここで変更したUTF8は、すべてUTF8(BOM付き)です。

BOMなしのUTF8形式のファイルをWindows PowerShellで表示しようとすると、文字化けします。Windows PowerShellでBOMなしのUTF8を表示する設定をしてもいいのですが、設定がすごく面倒なので、PowerShell Coreをインストールします。

PowerShell Coreは、デフォルトのエンコードがBOMなしのUTF8なので、BOM付きとBOMなしのUTF8形式のファイルが文字化けしません。

PowerShell Core のインストール

PowerShell Coreのインストール方法はいくつかあるのですが、簡単なのはMicrosoftStoreからのインストールです。

MicrosoftStoreで、PowerShellを検索しインストールするだけです。

その他の詳しいインストール方法は、こちら