2014-11-03 5 views
5

मेरा ऐप आयात सभी संदेशों Node.js। मैं इसके लिए imap एनपीएम मॉड्यूल का उपयोग करें।Convert बफर base64 -> UTF8 एन्कोडिंग जीमेल नोट्स फ़ोल्डर से

उनके GitHub पेज से उदाहरण का उपयोग मैं एक बफर में संदेश की सभी सामग्री मिलती है:

stream.on('data', function(chunk) { 
    count += chunk.length; 
    buffer += chunk.toString('utf8'); 
}); 

हालांकि, मैं क्या

0KHQvdCw0YfQsNC70LAg0YHQvtC30LTQsNC10YLRgdGPINGA0LXRiNC10YLQutCwINC/0YDQvtGB 0YLRgNCw0L3RgdGC0LLQsCDQstC+0L7QsdGA0LDQttC10L3QuNGPLiZuYnNwOzxkaXY+PGJyPjwv ZGl2PjxkaXY+0JfQsNGC0LXQvCDQvdCwI 

(रूस से गलत रूपांतरण की तरह वाक्य हैं हो)

मुझे पता चला है कि इन पाठ के स्निपेट बेस 64 में और ताकि उन्हें मैं इसे बेस 64 से UTF8 को बदलने की आवश्यकता को पढ़ने के लिए में एन्कोड कर रहे हैं।

वहाँ भी कभी कभी एक कष्टप्रद = चरित्र है कि कहीं से प्रकट होता है ...

letting them f= all on her shoulders 

क्या आप जानते हैं कि कैसे मैं उन दो समस्याओं से छुटकारा पाने सकता है?

धन्यवाद!

+1

बेस 64 से utf8 में कनवर्ट करने के लिए आप '(नया बफर (मूल, 'बेस 64')) .StString ('utf8') 'का उपयोग कर सकते हैं। क्या आप '=' समस्या के बारे में अधिक जानकारी दे सकते हैं? – jabclab

+0

इस @jabclab काम करता है, लेकिन केवल बफ़र्स कि केवल रूसी होते। यदि कोई बफर है जिसमें केवल अंग्रेज़ी टेक्स्ट या अंग्रेजी और रूसी है, तो यह गंदगी पैदा करता है। मुझे लगता है कि एन्कोडिंग की पहचान करने के लिए रूपांतरण से पहले मुझे कुछ स्क्रिप्ट चलाने की ज़रूरत है, है ना? –

+0

= समस्या के संबंध में @jabclab - यदि किसी कारण कभी कभी = सिर्फ हस्ताक्षर पाठ में बेतरतीब ढंग से डाला जाता है। मुझे लगता है कि यह वास्तव में कहां दिखाई देता है ... धन्यवाद! –

उत्तर

11

आदेश में एक बेस 64 से बदलने के लिए String इनकोडिंग UTF8 करने के लिए आप निम्न का उपयोग कर सकते हैं:

var base64encoded = '0KHQvdCw0YfQsNC70LAg0YHQvtC30LTQsNC10YLRgdGPINGA0LXRiNC10YLQutCwINC/0YDQvtGB 0YLRgNCw0L3RgdGC0LLQsCDQstC+0L7QsdGA0LDQttC10L3QuNGPLiZuYnNwOzxkaXY+PGJyPjwv ZGl2PjxkaXY+0JfQsNGC0LXQvCDQvdCwI'; 

var utf8encoded = (new Buffer(base64encoded, 'base64')).toString('utf8'); 
//^'Сначала создается решетка пространства воображения.&nbsp;<div><br></div><div>Затем на' 
+0

'नई बफर करना होगा()' * स्थिरता के साथ हटा दिया गया है: 0 *, देखें [mido के जवाब] (https://stackoverflow.com/a/40929309/1168315)। – Dominik

11

new Buffer(...) थोड़ी देर के लिए अब पदावनत किया गया है, Buffer.from(...)

एक सरल उदाहरण के लिए जाना हो सकता है:

var utf8encoded = Buffer.from(base64encoded, 'base64').toString('utf8'); 
संबंधित मुद्दे