@Sushkov
">alert("yohoho")

В чем может быть ошибка?

Сделал так:
try:
                            mess = str(msg).decode("utf-8")
                        except UnicodeEncodeError:
                            mess = str(msg)
                        except UnicodeDecodeError:
                            mess = str(msg)
                        try:
                            with open(os.path.join(DIR,".".join([name,"eml"])),"a") as f:
                                f.write(mess) 
                        except IOError:
                            name = "@noSubject@ " + str(random.getrandbits(100))
                            with open(os.path.join(DIR,".".join([name,"eml"])),"a") as f:
                                f.write(mess)

иногда выбрасывает ошибку:
UnicodeEncodeError: 'ascii' codec can't encode...
в строке
f.write(mess)
Я не понимаю почему?
  • Вопрос задан
  • 286 просмотров
Пригласить эксперта
Ответы на вопрос 1
valerium
@valerium
Изобретая велосипед
По всей видимости, текст сообщения приходит в unicode, а кодировка файла с кодом задана как ascii, то есть файл name.eml для дозаписи в текстовом режиме (mode='a') тоже открывается в ascii. И при попытке перекодировать unicode в ascii программа встречает символы, которые есть в первой кодировке, но отсутствуют во второй.

Можно или файл с кодом перевести в unicode режим, или файл для хранения писем открывать в режиме бинарной дозаписи (mode='ab').
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы