バージョン
request: 2.88.0
問題と解決策
requestパッケージを使ってShift JISやEUC、ZIPなどのバイナリデータを正しく取得する方法です。
日本語の文字コードをUNICODEに変換したり、zipを解凍したりするときには注意が必要です。
request({ url:'http://example.com/data.zip' }, (err, httpResponse, body) => { // bodyにバイナリーが入っているはず do something... });
のようなやり方では勝手に body
がUTF-8に変換されてしまってうまくいかないです。
なのでオプションで encoding: null
を指定する必要があります。
request({ url:'http://example.com/data.zip', encoding: null }, (err, httpResponse, body) => { // bodyには生のバイナリーが入る do something... });
このようにするとbodyはUTF-8に変換されずに生のバイナリーを受け取ることができます。
少しハマりました。。