iconv-liteを利用します。
今回はお上が出している祝日csvをダウンロードして、utf-8に変換します。
const https = require('https');
const csv = require('csv');
const iconv = require('iconv-lite');
const url= `https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv`;
const parser = csv.parse();
https
.get(url, response => {
response
.pipe(iconv.decodeStream('SJIS'))
.pipe(iconv.encodeStream('UTF-8'))
.pipe(parser);
})
.on('error', e => {
console.error(e);
});
httopsとcsv.parse();に関しては今回は本題でないため触れません。
getのリクエストでレスポンスとして返ったcsvを変換します。
エクセルで開くのに都合が良いせいかcsvはSJISで作られているケースが多く、高頻度で変換が必要になります。(node.jsはutf-8のため)
iconvを使えば簡単で、
iconv.decodeStream(‘SJIS’)でデコードし、
iconv.encodeStream(‘UTF-8’)で再エンコードするだけです。
とってもシンプル。
あとはエンコード済みのデータをcsv.parseに渡してあげると完了です。
コメント