转换缓冲区base64 - > utf8编码node.js

时间:2014-11-03 19:45:44

标签: javascript node.js encoding utf-8 base64

我的应用程序导入GMail的Notes文件夹中的所有邮件。我使用imap npm模块。

使用他们的github页面中的示例,我将消息的所有内容都放入缓冲区:

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

然而,我得到的是像

这样的句子
  0KHQvdCw0YfQsNC70LAg0YHQvtC30LTQsNC10YLRgdGPINGA0LXRiNC10YLQutCwINC/0YDQvtGB 0YLRgNCw0L3RgdGC0LLQsCDQstC+0L7QsdGA0LDQttC10L3QuNGPLiZuYnNwOzxkaXY+PGJyPjwv ZGl2PjxkaXY+0JfQsNGC0LXQvCDQvdCwI

(俄语转换错误)

我发现这些是在base64中编码的文本片段,为了阅读它们,我需要将它从base64转换为utf8。

有时还会出现恼人的=字符,无处不在......

 letting them f= all on her shoulders

你知道我怎么能摆脱这两个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:14)

new Buffer(...)已弃用一段时间了,请转到Buffer.from(...)

一个简单的例子可能是:

var utf8encoded = Buffer.from(base64encoded, 'base64').toString('utf8');

答案 1 :(得分:13)

要从base64编码的String转换为utf8,您可以使用以下内容:

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

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