kidoOooOoooOOom

IT系で開発やってます

nodejsで文字コードがsjisのcsvを取得して出力

svnサーバにあがっているcsvファイルを、httpsで取得してごにょごにょ処理をする必要があったのでメモ。
最初、httpsモジュール使って書いてたけど、文字化けがどうしても解決できなくて request モジュールに変えて enconding = null のオプションを使ったら解決した(http clientライブラリの中でレスポンスをそのまま返してもらえるように)。
sjisの文字をutf-8に変換するのは、iconvモジュール、csvのパースは csv-parseというモジュールを使った。
また、普通にhttpsプロトコルでrequestを送信すると、UNABLE_TO_VERIFY_LEAF_SIGNATUREエラーが帰ってくるので、一旦無視するようにしている。

下記がサンプルコード。

var Iconv = require('iconv').Iconv;
var sjis = new Iconv('SJIS', 'UTF-8//TRANSLIT//IGNORE');
var csvParse = require('csv-parse');
var url = require('url');
var request = require('request');

// for avoid UNABLE_TO_VERIFY_LEAF_SIGNATURE error
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

var url = url.parse('https://svnhogehoge');

request({ url: url, encoding: null }, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    body = sjis.convert(body).toString();
    csvParse(body, function(err, csvOutput) {
      console.log(csvOutput);
    });
  }
});

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)