日本語環境で作成されたcsvはシフトJISなので,Node.jsで扱うにはUTF-8に変換する必要がある.今回使うモジュールはnode-csvとiconvで,内部はstreamが実装されているから,素直にこれを使う.
npm install csv iconv
var fs = require('fs')
, csv = require('csv')
, Iconv = require('iconv').Iconv;
var iconv = new Iconv('SHIFT_JIS', 'UTF-8//TRANSLIT//IGNORE');
csv()
.from.stream(fs.createReadStream('sample.csv').pipe(iconv))
.on('record', function(row, index) {
console.log(index, row.join(','));
});
http://qiita.com/toshirot/items/b8137a66ca35e1b6a729 ではチャイルドプロセスでiconvを呼び出していた.これを参考にパースした結果を変換しようとしたが,pipeを使えばスッキリと記述できた.