我想將電子郵件從mbox格式導入到Django應用程序中。所有數據庫表都是Unicode。我的問題:有時會給出錯誤的字符集,有時甚至沒有。處理這些編碼問題的最佳方法是什麼?使用python測試電子郵件字符集
到目前爲止,我只窩例外嘗試我收到(UTF-8和ISO-8859-1)郵件的兩種最常見的字符集:
if (not message.is_multipart()):
message_charset = message.get_content_charset()
msg.message = message_charset + unicode(message.get_payload(decode=False), message_charset)
else:
for part in message.walk():
if part.get_content_type() == "text/plain":
message_charset = part.get_content_charset()
try:
msg.message = message_charset + unicode(part.get_payload(decode=False), message_charset)
except(UnicodeDecodeError):
try:
msg.message = message_charset + unicode(part.get_payload(decode=False), "utf-8")
except(UnicodeDecodeError):
msg.message = message_charset + unicode(part.get_payload(decode=False), "iso-8859-1")
是否還有更好的,更可靠的方法?
謝謝!
謝謝里奇, 爲暗示。我想我會在導入時繼續測試2-3種最常見的編碼 - 如果這些編碼失敗了,我會爲各自的郵件設置一個標誌,並提供選項將這些電子郵件提供給用戶界面中的chardet。 – Gregor 2010-08-24 10:04:20