Tech-d / python / 为什么在sys.setdefaultencoding之前要写r...

0 0

   

为什么在sys.setdefaultencoding之前要写reload(sys)

2015-01-05  Tech-d
摘抄来自:http://liguangming.com/how-to-use-utf-8-with-python

python 中获得系统默认编码为:
import sys
print sys.getdefaultencoding()

而修改系统默认编码应写为:
import sys
reload(sys)
sys.setdefaultencoding('UTF-8')
为什么需要一个看似多余的reload(sys)呢?

先看下python的模块加载过程:

# python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /usr/local/lib/python2.6/site.pyc matches /usr/local/lib/python2.6/site.py
import site # precompiled from /usr/local/lib/python2.6/site.pyc
....
Python运行的时候首先加载了site.py,在site.py文件里有这么一段代码:
if hasattr(sys, "setdefaultencoding"):
    del sys.setdefaultencoding

在sys加载后,setdefaultencoding方法被删除了,所以我们要通过重新导入sys来设置系统编码.





    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    来自: Tech-d > 《python》

    猜你喜欢

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多