日本語が含まれているCSVファイルをSJISで読み込み、表示する
目的
CSVファイルを読み込み、データを加工しようとしたとき、まずは簡単に読み込んで表示するだけのシェルを作ったら、文字化けして表示された。それを回避するためのメモとして以下に残す。
原因は、PowerShell内部文字コード
読み込むファイル内に日本語がある場合、ファイルの文字コードがSJISでも、Import-CSVで読み込むとUTF16(UTF16LE)らしい。
テキストファイルの読み込み書き出し - Get-Content他
Import-CSVで読み込むのではなく、Get-Content と ConvertFrom-CSV でCSVファイルを読み込んでやる。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,-,-