PowerShell 6で、Shift_JISのCSVをImport-Csvで読み込んだら文字化けした
Follow @venividivici830 PowerShell 4で作ったShift_JIS(シフトJIS)のCSVを読み込むスクリプトを、PowerShell 6で動かしたら文字化けした話。 結論としては、下記のようにすればOK。 > Import-Csv -Encoding ([System.Text.Encoding]::GetEncoding(932)) path_to_csv_file 現象 PowerShell 4では、 このページ にあるように、Import-Csvコマンドレットのオプションとして、-Encoding defaultを付ければよかった。 ところが、PowerShell 6では上手くいかない。 例えば、下記のようなshift-jisのCSVがある。 名前,年齢 田中,20 山田,10 これを、-Encoding defaultオプションで読み込むと、 > Import-Csv -Encoding default ./test.csv O N ---- ---- c 20 Rc 10 このように文字化けする具合だ。 原因 まず、「default」がutf-8に変わったのが原因のようだ。 .NET Framework クラスライブラリーの、System.Text名前空間の、Encodingクラスの、Defaultプロパティーを確認した。 > [ System.Text.Encoding ]:: Default BodyName : utf-8 EncodingName : Unicode (UTF-8) HeaderName : utf-8 WebName ...