logo
Published on

Powershellスクリプトを実行すると文字化けする

Authors

powershellをいじっていたら、コンソールで直接echoで日本語するぶんには文字化けしないが、スクリプトに日本語が含まれている状態でそのスクリプトを実行すると文字化けして出力させるということがわかった。 Powershellスクリプトを実行すると文字化けしてしまう場合の対処方法について紹介します。

# test.ps1
echo あ
PS C:\pg\selenium> echo あ
PS C:\pg\selenium> . test.ps1
縺・
PS C:\pg\selenium> . test.ps1

対処: bomをつける

nkf --overwrite --oc=UTF-8-BOM test.ps1
utf 8 - UTF8 Script in PowerShell outputs incorrect characters - Stack Overflow

上記のような文字化けが起きる場合は、nkfを使ってbomをつけると解決します。 nkfは、文字コードを変換するコマンドです。 nkfを使うときは、nkfのオプションに--oc=UTF-8-BOMをつけるとbomをつけることができます。

文字コードは、utf-8とutf-8-bomでは違うので注意してください。 utf-8-bomは、utf-8にbomをつけたものです。 bomは、文字コードを判別するためのものです。 bomをつけると、文字コードを判別することができるので、文字化けを防ぐことができます。