Кодировка Python - PullRequest
       19

Кодировка Python

0 голосов
/ 16 сентября 2010

У меня есть следующий код:

msgtxt = "é"

msg = MIMEText(msgtxt)
msg.set_charset('ISO-8859-1')
msg['Subject'] = "subject"
msg['From'] = "from@mail.com"
msg['To'] = "to@mail.com"
serv.sendmail("from@mail.com","to@mail.com", msg.as_string())

Письмо приходит с Ã © в качестве тела вместо ожидаемого é

Я пробовал:

msgtxt = "é".encode("ISO-8859-1")
msgtxt = u"é"
msgtxt = unicode("é", "ISO-8859-1")

все дают одинаковый результат.

Как сделать эту работу?

Любая помощь приветствуется.Заранее спасибо, J.

Ответы [ 2 ]

1 голос
/ 16 сентября 2010
msgtxt = "é"
msg.set_charset('ISO-8859-1')

Ну, а какова кодировка исходного файла, содержащего этот код?Если это UTF-8, который является хорошим выбором по умолчанию, просто запись é даст вам двухбайтовую строку '\xc3\xa9', которая, если смотреть на ISO-8859-1, выглядит как é.

Если вы хотите использовать байтовые строковые литералы не ASCII в исходном файле, не беспокоясь о том, в какой кодировке текстовый редактор его сохраняет, используйте escape-литерал строки:

msgtxt = '\xE9'
0 голосов
/ 16 сентября 2010
# coding: utf-8        (or whatever you want to save your source file in)
msgtxt = u"é"
msg = MIMEText(msgtxt,_charset='ISO-8859-1')

Без u текст будет в исходной кодировке. Как строка Unicode, msgtxt будет кодироваться в указанном наборе символов.

...