0

如果我做:

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)

如何避免这个错误?

更新。添加了第二个变量bodysubject并且body是字符串变量。

4

2 回答 2

4

这就是我将如何使用它:

logging.debug(u'subject: %s', subject)

在你的情况下subject似乎是 unicode。所以格式也应该是unicode。

当你这样做时'subject: '+subject,如果其中一个操作数是 unicode,另一个会自动转换为 unicode。

请注意,我做了debug(u'subject: %s', subject)而不是debug(u'subject: %s' % subject)- 所以字符串仅在记录器实际发出记录时才被格式化。

于 2013-04-20T15:45:30.107 回答
0

这就是它应该如何使用(python 2.7):

logging.debug('subject: %s' % subject)

例如使用格式规范print

>>> sr = "aaaaaa"
>>> print "d%s" % s
daaaaaa
于 2013-04-20T15:43:23.263 回答