UnicodeDecodeError: кодек "ascii" не может декодировать байт 0xe3

UnicodeDecodeError: кодек "ascii" не может декодировать байт 0xe3

Я сталкиваюсь с этой проблемой при запуске почтового скрипта в py 2.7 для строки...

msg.attach (MIMEText (welcome_msg + htmlMessageContent + footer_msg, 'html'))

1 ответ

Решение

Один из элементов строки, которую вы объединяете

welcome_msg + htmlMessageContent + footer_msg

Unicode, а другой нет. Когда вы объединяете строки, Python преобразует их все в общий тип (Unicode), так же, как и при добавлении целого числа в число с плавающей точкой. Но преобразование строки по умолчанию в Unicode - ascii, и если строка содержит не-ascii символ, произойдет сбой.

Узнайте, какая строка не является Unicode. Для этого вы можете использовать type(), Оберните эту строку в вызове unicode() это объясняет, как вы хотите '\xe3' интерпретированы. Например, если '\xe3' следует интерпретировать как 'ã':

unicode(mystring, encoding='Latin-1')

Тогда ваша конкатенация должна работать.

Другие вопросы по тегам