假设我想在使用Python 2.7进行日志记录时处理Unicode字符串。将编码参数添加到FileHandler似乎是“正确的”。我应该在我的Python日志处理程序中添加encoding ='utf-8'吗?
# coding=utf-8
import logging
logger = logging.getLogger()
logger.addHandler(logging.FileHandler('my_log.txt', encoding='utf-8'))
logger.error(u'Pão')
logger.error('São')
这有几个问题,虽然:
- 它提出了一个UnicodeDecodeError错误的UTF-8字符串字面'骚。
- 的输出文件在Windows LF行结束,当CRLF似乎更为合适。
但是,如果我没有通过任何编码,我没有这些问题。这两个字符串都被记录到一个UTF-8文件中,我得到了CRLF行结束符。 (我认为行结束问题与指定编码时以二进制模式打开的文件有关。)
由于省略编码似乎工作得更好,是否有某种原因我错过了,我会曾经通过encoding='utf-8'
?