使用python2.6(不要评判我;-))和日志模块,我发现尝试用unicode位记录整个dict会引起问题。你知道吗
你知道吗日志.调试(“mydict是%s”,mydict)
当在测试运行程序中运行时,这会导致UnicodeDecodeError异常,但在简单的python shell中则不会。你知道吗
>>> d
{'foo': u'\u2615'}
>>> d['bar'] = d['foo'].encode('utf8')
>>> d
{'foo': u'\u2615', 'bar': '\xe2\x98\x95'}
>>> print d['foo']
☕
>>> print d['bar']
☕
>>>
>>> d
{'foo': u'\u2615', 'bar': '\xe2\x98\x95'}
>>> print "%s" % d
{'foo': u'\u2615', 'bar': '\xe2\x98\x95'}
>>> import logging
>>> logging.basicConfig()
>>> log = logging.getLogger('')
>>> log.setLevel(logging.DEBUG)
>>> log.debug("%s", d)
DEBUG:root:{'foo': u'\u2615', 'bar': '\xe2\x98\x95'}
因此,在终端中一切正常,但在测试运行程序中我遇到了异常,因为python显然试图使用ascii编解码器对dict的repr字符串进行解码。你知道吗
所以,我想知道为什么不一致?为了调试目的,向记录器发送dict的一种好的、安全的方法是什么?你知道吗
干杯, 迈克
目前没有回答
相关问题 更多 >
编程相关推荐