王依依

王依依的博客

她的个人主页  她的博客

python 2.6 logging 编码错误

王依依  2009年08月29日 星期六 18:36 | 2492次浏览 | 8条评论

接昨天  切换到 Python 2.6 告别 Python 2.5  ,

logging 模块很BUG...

In [1]: import logging

In [2]: logging.warning("春哥纯爷们")

Traceback (most recent call last):

  File "D:\Python26\lib\logging\__init__.py", line 773, in emit

    stream.write(fs % msg.encode("UTF-8"))

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb4 in position 13: ordinal

 not in range(128)

In [3]: logging.warning(u"春哥纯爷们")

WARNING:root:麓潞赂莽麓驴脪炉脙脟

---------------------------------------------------------------

无奈了. 忽然想起还有修复编码错误的一条秘笈.

In [5]:  import sys

In [6]: import site # needless .

In [7]: reload(sys)

<module 'sys' (built-in)>

In [8]: sys.setdefaultencoding('gb18030')

In [9]: logging.warning("春哥纯爷们")

WARNING:root:春哥纯爷们

In [10]: logging.warning(u"春哥纯爷们")

WARNING:root:????????????????????

这样就和 python2.5 差不多了. 

还是很期待 py3k, 起码不用担心编码错误.

---------------------------------------------------------------------

sys.setdefaultencoding 默认无法调用. 必须 reload 一下才行.

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
杨昆

回复 杨昆  2009年10月21日 星期三 08:32

设为mbcs编码中文支持好点儿
>>> sys.setdefaultencoding('mbcs')
>>> logging.warning("春哥纯爷们")
WARNING:root:春哥纯爷们
>>> logging.warning(u"春哥纯爷们")
WARNING:root:春哥纯爷们

还是linux方便,直接unicode搞定,不用reload

3条回复

胡锦涛

回复 胡锦涛  2009年09月04日 星期五 12:26

赞 warning message

2条回复

肖鹏

回复 肖鹏  2009年08月31日 星期一 18:02

先顶一下。学习

0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号