6

का उपयोग करते हुए, नोडजेस जावास्क्रिप्ट में सीपी 9 32 से यूटीएफ -8 में वर्ण एन्कोडिंग को कैसे परिवर्तित करें, मैं जावास्क्रिप्ट में utf8 में CP932 (उर्फ विंडोज -31 जे) से स्ट्रिंग को बदलने का प्रयास कर रहा हूं। असल में मैं ऐसी साइट को क्रॉल कर रहा हूं जो अनुरोध शीर्षलेख में utf-8 अनुरोध को अनदेखा करता है और cp932 एन्कोडेड टेक्स्ट देता है (भले ही HTML मेटाटैग इंगित करता है कि पृष्ठ shift_jis है)।nodejs-iconv मॉड्यूल (या अन्य समाधान)

वैसे भी, मेरे पास संपूर्ण पृष्ठ "स्ट्रिंग वैरिएबल" में संग्रहीत है जिसे "html" कहा जाता है। वहां से मैं इस कोड का उपयोग करने के लिए UTF8 परिवर्तित करने का प्रयास कर रहा हूँ:

var Iconv = require('iconv').Iconv; 
var conv = new Iconv('CP932', 'UTF-8//TRANSLIT//IGNORE'); 

var myBuffer = new Buffer(html.length * 3); 
myBuffer.write(html, 0, 'utf8') 
var utf8html = (conv.convert(myBuffer)).toString('utf8'); 

परिणाम क्या यह माना जाता है नहीं है। उदाहरण के लिए, स्ट्रिंग: "投稿 者 さ ん の 稚 内 全日空 ホ テ ル の ク チ コ ミ (感想 · 情報)" के रूप में "ソ ス ソ ス ソ ス ई ソ ス メ ゑ ソ ス ソ ス ソ ス ソ ス ソ ス ソ ス टी ソ ス ソ ス ソ ス एस ソ ス ソ ス ソ ス ソ ス ソ ス z ソ ス ई ソ ス ソ ス ソ ス フ ク ソ ス बाहर आता है`ソ ス आर ソ ス ~ (ソ ス ソ ス ソ ス z ソ ス ई ソ ス ソ ス ソ ス ソ ス) "

अगर मैं हटाने // translit // ध्यान न दें (जो यह पात्रों लापता के लिए इसी तरह के पात्रों पर लौटने के लिए चाहिए और ऐसा न करने पर कि छोड़ गैर ट्रांसकोड करने योग्य वर्ण), मुझे यह त्रुटि मिलती है: त्रुटि: EILSEQ, अवैध वर्ण अनुक्रम।

मैं किसी भी समाधान का उपयोग करने के लिए खुला हूं जिसे नोडजेज़ में कार्यान्वित किया जा सकता है, लेकिन मेरे खोज परिणामों ने नोडजेस-आइकनव मॉड्यूल के बाहर कई विकल्प नहीं दिए हैं।

NodeJS-iconv रेफरी: https://github.com/bnoordhuis/node-iconv

धन्यवाद!

24.06.2011 संपादित करें: मैं आगे बढ़ गया हूं और जावा में एक समाधान लागू किया है। हालांकि अगर कोई इसे हल कर सकता है तो भी मुझे इस समस्या के जावास्क्रिप्ट समाधान में दिलचस्पी होगी।

+0

क्या आपने मौके से और से भ्रमित किया है? –

+0

जिस तरह से मैंने इसे स्थापित किया है, मॉड्यूल दस्तावेज में उदाहरणों से मेल खाता है, लेकिन सिर्फ किक्स के लिए मैंने इसे स्वैप करने का प्रयास किया, और परिणाम खराब दिखाई देता है। मुझे यह स्ट्रिंग मिलती है: "ई tSze एन'आर ~ (जेईई)" – Brian

उत्तर

0

https://github.com/bnoordhuis/node-iconv/issues/19

मैंने कोशिश का उपयोग कर/समस्या से बच सकते हैं उपयोगकर्ता/Me/node_modules/iconv/test.js नोड test.js. यह त्रुटि लौटाता है।

मैक ओएस एक्स शेर पर, यह समस्या जीसीसी पर निर्भर करती है।

5

मुझे एक ही समस्या थी, लेकिन सीपी 1250 के साथ। मैं हर जगह समस्या की तलाश में था और सब कुछ ठीक था, अनुरोध के कॉल को छोड़कर - मुझे encoding: 'binary' जोड़ना पड़ा।

request = require('request') 
Iconv = require('iconv').Iconv 

request({uri: url, encoding: 'binary'}, function(err, response, body) { 
    body = new Buffer(body, 'binary') 
    iconv = new Iconv('CP1250', 'UTF8') 
    body = iconv.convert(body).toString() 
    // ... 
}) 
संबंधित मुद्दे