PowerShell | ps1ファイルで日本語の文字化けを回避する方法

2023-10-10PowerShell 基本,PowerShell

PowerShell | ps1ファイルで日本語の文字化けを回避する方法

PowerShellのps1ファイルは文字エンコードを変更しないと日本語を含むマルチバイト文字は文字化けして扱われてしまいます。
このページでは日本語の文字化けを回避する方法を紹介しています。

確認した環境

OS Windows11 22H2
PowerShell 7.1.3

ps1ファイルで日本語の文字化けを回避する

ps1ファイルで日本語を扱う場合、文字化け対策としてファイルの文字コードは「SHIFT-JIS」「BOM付きUTF-8」で保存する必要があります。

例えば、以下のコマンドを使ってデフォルトの文字エンコーディングを「UTF-8」に設定しても、ファイルの文字コードが「UTF-8」で日本語を含むマルチバイト文字は文字化けしてしまうので注意が必要です。

$OutputEncoding = [System.Text.Encoding]::UTF8

VSCodeでの「BOM付きUTF-8」への変換方法

下部メニューの文字コードをクリック、またはコマンドパレットから「ファイルのエンコードを変更」を実行して「UTF-8 with BOM」を選択します。

VSCodeでBOM付きUTF-8に変換
VSCodeでBOM付きUTF-8に変換

Windowsのメモ帳での「BOM付きUTF-8」への変換方法

対象のファイルを「ファイルを開く」から開く時、または「名前を付けて保存」の選択時に「エンコード」の項目から「UTF-8(BOM 付き)」を選択します。

メモ帳でBOM付きUTF-8に変換
メモ帳でBOM付きUTF-8に変換