我正在从stdin处理电子邮件订阅源,我收到了50种不同编码的电子邮件。如何编写代码将其转换为UTF-8,或者只是在内存中读取它。
SyntaxError:第450行文件mime2vt.py中的非ASCII字符'\ xc2',但未声明编码;
我无法申报和编码,因为互联网上的随机人员已经编码了。
我已修改地址以保护自己
Return-Path: <vba@uyh.com>
X-Original-To: me@me.com
Delivered-To: me@me.com
Received: from uyh.com (unknown [27.150.160.116])
by <me> (Postfix) with ESMTP id 528FC7B5A53
for <me@me.com>; Fri, 25 Sep 2015 18:49:13 -0500 (CDT)
From: =?GB2312?B?x+vXqtDox/PIy9Sx?= <vba@uyh.com>
Subject: =?GB2312?B?tNO8vMr119/P8rncwO0=?=
To: me@me.com
Content-Type: text/plain;charset="GB2312"
Date: Sat, 26 Sep 2015 07:49:08 +0800
X-Priority: 2
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
´Ó¼¼Êõ×ßÏò¹ÜÀí
2015Äêʱ¼ä°²ÅÅ
10ÔÂ26-27ÈÕ±±¾© 11ÔÂ2-3ÈÕÉϺ£ 10ÔÂ29-30ÈÕÉîÛÚ
11ÔÂ19-20±±¾© 11ÔÂ23-24ÈÕÉϺ£ 11ÔÂ30-12ÔÂ1ÈÕÉîÛÚ
12ÔÂ28-29ÈÕ±±¾© 12ÔÂ24-25ÈÕÉϺ£ 12ÔÂ21-22ÈÕÉîÛÚ
这是错误的代码。
data = join([sys.stdin])
for line in sys.stdin:
data+=line.decode("utf8")
msg = email.message_from_string(data)
我甚至无法访问 charset = 值。这也可能是伪造的,但至少我会有一些线索。
我刚试过这个: 的数据= sys.stdin.read(100) 得到了这个:
File "/usr/lib64/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 546: invalid start byte
我甚至没有要求字节546,即使我要求1个字节,它仍然会读取它。
有人建议python3 -u </here/whatever
那仍然是错误。