如果我这样做:
logging.debug('subject: '+subject)
logging.debug('body: '+body)
然后它运作良好。 如果我将其替换为:
logging.debug('subject: %s, body: %s' % (subject, body))
然后我得到
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
如何避免此错误?
UPD。添加了第二个变量body
。 subject
和body
是字符串变量。
答案 0 :(得分:4)
这就是我如何使用它:
logging.debug(u'subject: %s', subject)
在您的情况下,subject
似乎是unicode。所以格式也应该是unicode。
执行'subject: '+subject
时,如果其中一个操作数是unicode,则另一个操作数会自动转换为unicode。
注意我做了debug(u'subject: %s', subject)
而不是debug(u'subject: %s' % subject)
- 所以只有当记录器实际发出记录时才会格式化字符串。
答案 1 :(得分:0)
应该如何使用它(python 2.7
):
logging.debug('subject: %s' % subject)
e.g。使用print
的格式规范:
>>> sr = "aaaaaa"
>>> print "d%s" % s
daaaaaa