日本語が含まれているCSVファイルをSJISで読み込み、表示する

目的

CSVファイルを読み込み、データを加工しようとしたとき、まずは簡単に読み込んで表示するだけのシェルを作ったら、文字化けして表示された。それを回避するためのメモとして以下に残す。

原因は、PowerShell内部文字コード

読み込むファイル内に日本語がある場合、ファイルの文字コードSJISでも、Import-CSVで読み込むとUTF16(UTF16LE)らしい。
テキストファイルの読み込み書き出し - Get-Content他
Import-CSVで読み込むのではなく、Get-Content と ConvertFrom-CSVCSVファイルを読み込んでやる。Get-ContentはデフォルトSJISで読み込むので、OK。

実例

PS C:\Users\tomohiko\Documents\01_kabu\tool> ./testgetcontent.ps1


Code : 10
Name : TOPIX
a : 東証    ★文字化けしない!★
b : 指数    ★文字化けしない!★
c : 1220.77
d : 1223.12
e : 1214.69
f : 1217.52
g : -
h : -

testgetcontent.ps1の中身は以下。

$A = Get-Content .\2013-09-27_all.csv | ConvertFrom-CSV
echo $A

2013-09-27_all.csvの中身は以下。

Code,Name,a,b,c,d,e,f,g,h
10,TOPIX,東証,指数,1220.77,1223.12,1214.69,1217.52,-,-