2014-09-02 5 views
5

요청 모듈을 사용하여 utf-8 이외의 웹 사이트에 액세스하려고합니다. 이 요청에 대한 응답이 왜곡됩니다.Node.js mikeal/request module - 깨진 비 utf8 웹 사이트 (Shift_JIS)

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로 설정 한 후에도 일본어 텍스트가 깨져 보입니다.

+1

난 당신이 SHIFT_JIS를 디코딩하려면이 옵션을 사용할 수 있다고 생각 https://github.com/ashtuchkin/iconv-lite UTF-8 문자열로 버퍼링합니다. – Jerry

+0

다른 노드를 여기에서 발견했습니다. Meteor 패키지로 만들려고합니다. https://github.com/polygonplanet/encoding.js –

+0

너무 좋아 보이는 @Jerry –

답변

4

직접 변환해야합니다. 아래 예제 코드는 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 아직 StringBuffer (바이트 배열)를 변환하지 묻는다.
  2. 이 버퍼를 Iconv으로 전달하여 Buffer의 UTF-8 인코딩으로 변환합니다.
  3. 이제이 Buffer은 String으로 변환하기에 좋습니다.

은 (BTW, http://www.alc.co.jp은 UTF-8로 전환했다, 그래서 나는 다른 사이트로 대체.)

+0

감사합니다. Alan! 이것은 어떤 사람들을 도와야합니다. 건배! –

관련 문제