python改变默认编码
2010年09月12日 星期日 16:28
最近使用SyslogHandler处理日志的时候发现,基于socket的Handler都不能设置默认编码,比如SocketHandler, DatagramHandler和SyslogHandler。在这种情况下,对于unicode的日志会出现编码错误。

解决办法,修改python的默认编码:
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
原因即在初始化完毕之后,不要让用户改变默认编码,这有利于保持系统一致性。
sys.setdefaultencoding改变的是全局的默认编码,所以要注意对于其它python代码的影响。
::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com



自怼圈/年番新

DU21.4
关于 ~ DebugUself with DAMA ;-)


关注公众号, 持续获得相关各种嗯哼:
zoomquiet


粤ICP备18025058号-1
公安备案号: 44049002000656 ...::