7

request モジュールを使用して、utf-8 以外の Web サイトにアクセスしようとしています。このリクエストに対するレスポンスは文字化けしています。

var request = require('request');
request('http://www.alc.co.jp/', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Print the web page.
  }
});

エンコード オプションを Shift_JIS に設定した後でも、文字化けした日本語テキストが表示されます。

4

1 に答える 1

6

変換は自分で行う必要があります。以下のコード例では、node-iconv を使用しています。

    var Iconv = require('iconv').Iconv;
    var request = require('request');
    request({
      uri: 'http://www.jalan.net/',
      encoding: null,
    }, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        body = new Iconv('shift_jis', 'utf-8').convert(body).toString();
        console.log(body); // Print the web page.
      }
    });
  1. encoding: nullパラメーターは、(バイト配列) をまだrequest変換しないように要求します。BufferString
  2. 別の UTF-8 エンコーディングIconvに変換するために、このバッファを に渡します。Buffer
  3. これBufferで、文字列に変換できるようになりました。

(ちなみにhttp://www.alc.co.jpがUTF-8に切り替わったので、別のサイトに差し替えました。)

于 2015-04-03T08:59:20.540 に答える