在StackOverflow上有一些关于这个问题的答案,但没有一个对我有效。
我将来自谷歌邮箱导入的混合数据(一些是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');
}
}发布于 2014-11-05 03:48:31
问题是,我通过Node.Js的node-imap模块接收的数据在参数中包含两个不同的编码参数:
attrs.struct[0].params.charset将为所有消息设置为utf-8编码。
而
attrs.struct[0].encoding对于使用base64编码的消息,将设置为BASE64
因此,我将两个参数都传递给了msg.once('end'),检查attrs.struct.encoding是否为base64,并将这样的字符串从base64转换为utf-8:
statement = new Buffer(email, 'base64').toString('utf8');其余的则通过
statement = mimelib.decodeQuotedPrintable(email);https://stackoverflow.com/questions/26738654
复制相似问题