VSCodeでPowerShellスクリプトの文字化けを解決する方法

Visual Studio Code(VSCode)でPowerShellスクリプトを作成・実行している場合、 日本語を扱った際に文字化けすることがあります。
具体的にはデフォルトでインストールされている「Windows PowerShell」を使用していて、 文字コードが「UTF-8」(BOMなし)の場合に文字化けします。

この文字化けの解決方法は大きく分けて2つあります。

  1. 文字コードをUTF-8(BOMあり)に変更する
  2. 「PowerShell Core」をインストールする

手っ取り早いのは1番目の方法ですが、 文字コードのBOMあり、BOMなしの煩わしさから解放されたいなら 2番目の方法がおすすめです。

解決方法1. 文字コードをUTF-8(BOMあり)に変更する

「Windows PowerShell」のデフォルト文字コードはUTF-8(BOMあり)です。 ですからBOMなしのUTF-8になっている場合は文字化けします。

VScodeで文字コードを変更するには、 VSCode画面右下に表示されている文字コード部分をクリック。

文字コード

VSCode画面上部に表示されている「エンコード付きで保存」をクリック。

エンコード付きで保存

「UTF-8 with BOM utf8bom」を選択。

UTF-8 with BOM

これで文字コードがUTF-8(BOMあり)に変更されます。 この状態でPowerShellスクリプトを実行すると日本語も正常に表示されます。

UTF-8(BOMあり)に変更

解決方法2. 「PowerShell Core」をインストールする

もう一つの解決方法は「PowerShell Core」をインストールすることです。 「PowerShell Core」はPowerShellの新しいエディションで、 2018年からリリースされています。 特徴としてクロスプラットフォーム対応なのでWindows以外のOSでも動かせます。

従来の「Windows PowerShell」のデフォルト文字コードはUTF-8(BOMあり)ですが、 「PowerShell Core」のデフォルト文字コードはUTF-8(BOMなし)です。
ですから「PowerShell Core」をインストールして使用すると、 文字コードをBOMありに変更する必要がなくなります。

どのみち今後は「Windows PowerShell」から「PowerShell Core」への 移行が進みますし、BOMあり・BOMなしのわずらわしさから解放されたいなら 「PowerShell Core」をインストールすることをお勧めします。 「Windows PowerShell」と「PowerShell Core」は別々のソフトウェアなので インストールしても上書きされるわけではなく、共存します。

インストール方法

「PowerShell Core」をインストールするには 「Microsoft Store」から「powershell」と入力して インストールする方法が一番簡単です。 (私の場合は5分程度でインストール完了しました)

Microsoft Store PowerShell

他の方法でインストールする場合は以下の公式サイト情報を参考にしてください。
PowerShell を Windows、Linux、macOS にインストールする - PowerShell | Microsoft Docs

PowerShellのバージョンとエディションの確認方法

VScodeのPowerShellコンソール上で「$PSVersionTable」 と入力してEnterキーを押してください。 下のようにバージョンとエディションが表示されます。 「PowerShell Core」の場合は 「PSEdition」の値が「Core」と表示されます。

PS D:\test\powershell> $PSVersionTable

Name        Value
----        -----
PSVersion   7.2.1
PSEdition   Core
....

「Windows PowerShell」の場合は「PSEdition」の値が 「Desktop」と表示されます。

PS D:\test\powershell> $PSVersionTable

Name        Value                                                               
----        -----                                                               
PSVersion   5.1.19041.1320                                                   
PSEdition   Desktop 

PowerShell