Export-CSVで文字化けする理由
- srgia.blog - [映画]タッチでPowerShellの文字化けについて書かれています。
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でエンコーディングされることになります。
ですから全角文字も化けません。
参考
- Microsoft.PowerShell.Commands.ExportCsvCommand
- Microsoft.PowerShell.Commands.EncodingConversion