2014-09-02 6 views
5

मैं अनुरोध मॉड्यूल का उपयोग कर एक गैर UTF8 वेबसाइट का उपयोग करने की कोशिश कर रहा हूँ। इस अनुरोध के लिए प्रतिक्रिया गड़बड़ है।Node.js mikeal/अनुरोध मॉड्यूल - विकृत गैर 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

https://github.com/ashtuchkin/iconv-lite मुझे लगता है कि आप इस का उपयोग कर सकते SHIFT_JIS डिकोड करने के लिए यूटीएफ -8 स्ट्रिंग में बफर। – Jerry

+0

यहां नोड के लिए दूसरा पाया गया। मैं कोशिश करने जा रहा हूं और इसे एक उल्का पैकेज में बना रहा हूं। https://github.com/polygonplanet/encoding.js –

+0

जो भी अच्छा दिखता है @ जेरी –

उत्तर

4

आप रूपांतरण खुद करने की ज़रूरत है। नीचे दिया गया उदाहरण कोड नोड-आइकनव का उपयोग करता है।

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 पैरामीटर पूछता requestString में Buffer (एक बाइट सरणी) कन्वर्ट करने के लिए अभी तक नहीं।
  2. हम UTF-8 एन्कोडिंग का एक और Buffer में परिवर्तित करने के लिए Iconv को यह बफर गुजरती हैं।
  3. अब यह Buffer स्ट्रिंग में परिवर्तित होने के लिए अच्छा है।

(Btw, http://www.alc.co.jp UTF-8 में बंद कर दिया है, तो मैं एक और साइट के साथ प्रतिस्थापित।)

+0

धन्यवाद एलन! इससे कुछ लोगों की मदद करनी चाहिए। चीयर्स! –

संबंधित मुद्दे