Я пытаюсь зарегистрировать содержимое файла, но я получаю какое-то смешное поведение от модуля протоколирования (и не только этого).Печать успешно завершена, но исключение logging module исключает
Вот содержимое файла:
"Testing …"
Testing å¨'æøöä
"Testing å¨'æøöä"
А вот как я могу открыть и зарегистрировать ее:
with codecs.open(f, "r", encoding="utf-8") as myfile:
script = myfile.read()
log.debug("Script type: {}".format(type(script)))
print(script)
log.debug("{}".format(script.encode("utf8")))
линии, где я вхожу тип объекта проявляется следующим образом в моем журналы:
Script type: <type 'unicode'>
Затем print ...
линия печатает содержимое правильно утешать, но, в Logg ИНГ модуль генерирует исключение:
Traceback (most recent call last):
File "/usr/lib/python2.7/logging/__init__.py", line 882, in emit
stream.write(fs % msg.encode("UTF-8"))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 63: ordinal not in range(128)
Когда я извлекаю .encode("utf8")
немного от этой последней строки, я получаю ожидаемое исключение:
'ascii' codec can't encode character u'\u2026' in position 9: ordinal not in range(128)
Это просто, чтобы продемонстрировать эту проблему. Это не только модуль регистрации. Остальная часть моего кода также вызывает аналогичные исключения при работе с этой строкой «unicode».
Что я делаю неправильно?
Oh ! Смешивание юникода с ASCII ... Я сейчас стучу головой в стену (и набрав одновременно). Большое спасибо. Это должен быть один из тех дней ... Я буду отмечать это как ответ. –