【发布时间】:2015-01-24 21:09:44
【问题描述】:
我正在尝试记录文件的内容,但我从记录模块(不仅是那个)中得到了一些有趣的行为。
这是文件内容:
"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 ... 行将内容正确打印到控制台,但是,日志模块抛出异常:
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”字符串时,我的其余代码也会抛出类似的异常。
我做错了什么?
【问题讨论】:
标签: python python-2.7 logging encoding python-unicode