StackOverflow上有一些关于此的答案,但它们都不适用于我。
我有来自Google邮箱导入的混合数据(有些是在utf-8中,有些在base64中)到我的Node.Js应用程序中,我需要检查每个字符串是否在base64中。
有没有人有一个有效的解决方案?
数据示例
0KHQvdCw0YfQsNC70LAg0YHQvtC30LTQsNC10YLRgdGPINGA0LXRiNC10YLQutCwINC/0YDQvtGB
0YLRgNCw0L3RgdGC0LLQsCDQstC+0L7QsdGA0LDQttC10L3QuNGPLiZuYnNwOzxkaXY+PGJyPjwv
ZGl2PjxkaXY+0JfQsNGC0LXQvCDQvdCwINC90LXQtSDQvdCw0L3QuNC30YvQstCw0LXRgtGB0Y8g
0LLRi9C80YvRgdC10LsuPC9kaXY+PGRpdj48
获取它的代码github.com/mscdex/node-imap但我只保留消息文本,即
msg.on('body', function(stream, info) {
stream.on('data', function(chunk) {
count += chunk.length;
buffer += chunk.toString('utf8');
}
}
答案 0 :(得分:1)
问题是我通过Node.Js的node-imap模块接收的数据在参数中包含两个不同的编码参数:
attrs.struct[0].params.charset
将被设置为所有消息的utf-8编码
而
attrs.struct[0].encoding
对于base64编码中的消息,将设置为BASE64
所以我将变量中的两个参数传递给msg.once('end')
,检查attrs.struct [0] .encoding是否为base64并将这些字符串的转换从base64应用到utf-8:
statement = new Buffer(email, 'base64').toString('utf8');
其余的通过
控制statement = mimelib.decodeQuotedPrintable(email);