浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

python改变默认编码_Harry‘s World!_百度空间

最近使用SyslogHandler处理日志的时候发现,基于socket的Handler都不能设置默认编码,比如SocketHandler, DatagramHandler和SyslogHandler。在这种情况下,对于unicode的日志会出现编码错误。

解决办法
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

为什么要reload(sys)呢?
Python的初始化脚本site.py会把sys模块的setdefaultencoding方法删除。
这是site.py中的代码及解释。
# Remove sys.setdefaultencoding() so that users cannot change the
# encoding after initialization.  The test for presence is needed when
# this module is run as a script, because this code is executed twice.
if hasattr(sys, "setdefaultencoding"):
del sys.setdefaultencoding

Python在初始化完毕之后,禁止用户改变默认编码,这有利于保持系统一致性。
sys.setdefaultencoding改变的是全局的默认编码,所以要注意对于其它python代码的影
posted on 2012-11-07 10:11  lexus  阅读(162)  评论(0编辑  收藏  举报