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 从互联网中抓取并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

蟒营®编程思维提高班 Python版/第11期 正在报名

精品小班/ 每期<42人


扫描报名: 101camp12py

蟒营®式 原创课程

伴你重享学习乐趣

官网: py.101.camp

Reactivate Joy by Self-teching with You


任何问题可先进入知识星球(免费)咨询:
FAQ

关注公众号, 持续获得相关各种咨询:
mainium


追问

任何问题, 随时邮件提问可也:
askdama@googlegroups.com


...::