Export-CSVで文字化けする理由

- srgia.blog - [映画]タッチPowerShellの文字化けについて書かれています。

NG:文字化けする

Get-Service | Export-Csv c:\service.csv

OK:文字化けしない

Get-Service | Export-Csv c:\service.csv -encoding Default

私の環境でも同様の結果になりました。

Export-Csvコマンドレットと-encodingオプション

「encoding」オプションのデフォルト値はASCII

Export-Csvコマンドレットのencodingオプションのデフォルト値はASCIIです。
そのため「encoding」オプションを指定しない場合は、ASCIIでエンコードされるため全角文字は化けてしまいます。


ASCIIの詳細は以下を実行すると分かります。

[System.Text.Encoding]::ASCII

Defaultとは?

Defaultはシステムのデフォルトエンコーディングです。
デフォルトエンコーディングは以下を実行すると確認できます。

[System.Text.Encoding]::Default


以下は、私の環境での実行結果です。

PS C:\> [System.Text.Encoding]::Default

BodyName          : iso-2022-jp
EncodingName      : 日本語 (シフト JIS)
HeaderName        : iso-2022-jp
WebName           : shift_jis
WindowsCodePage   : 932
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
IsSingleByte      : False
EncoderFallback   : System.Text.InternalEncoderBestFitFallback
DecoderFallback   : System.Text.InternalDecoderBestFitFallback
IsReadOnly        : True
CodePage          : 932


つまり、以下を実行するとシフトJISエンコーディングされることになります。
ですから全角文字も化けません。

Get-Service | Export-Csv c:\service.csv -encoding Default

参考