私は頭を抱えています。誰かが私のためにこれを馬鹿にしてもらえますか??
コードを Python 2.6 から 2.7 に移植していますが、Unicode の問題が原因で、突然メール ペイロードを取得できなくなりました (異なる Py バージョンを使用しているだけで、文字通り同じメールを取得しています)。Unicode HOWTO を読んで道に迷ってしまいました。
Python 2.6 で実行すると、次のように動作します。
response = server.fetch(messages, ['RFC822'])
for msgid, data in response.iteritems():
msg_string = data['RFC822']
msg = email.message_from_string(msg_string)
body = msg.get_payload()
abody = str(body[1]) #converts the HTML instance to a string
しかし、これを 2.7 で実行すると、次のエラーが発生します。
File "./foo.py", line 75, in main
msg = email.message_from_string(msg_string)
File "/usr/lib/python2.7/email/__init__.py", line 57, in message_from_string
return Parser(*args, **kws).parsestr(s)
File "/usr/lib/python2.7/email/parser.py", line 82, in parsestr
return self.parse(StringIO(text), headersonly=headersonly)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 3041: ordinal not in range(128)
したがって、明らかに 2.7 インタープリターは、私が読んでいる電子メールの一部を気に入っていません。また、型を変換する必要があると思われます (または、何らかの方法で出力型をいじる) が、本当の問題と解決策についてはわかりません。 .
私はこれに 2 時間かかっており、手を差し伸べることができます。ありがとう。