Shift JISのCSVをUTF-8に変換する。(Node.js)

JavaScript

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に渡してあげると完了です。

コメント