为什么在sys.setdefaultencoding之前要写reload(sys)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在sys.setdefaultencoding之前要写reload(sys)相关的知识,希望对你有一定的参考价值。
为什么在sys.setdefaultencoding之前要写reload(sys)
python 中获得系统默认编码为:
import sys
print sys.getdefaultencoding()
而修改系统默认编码应写为:
import sys
reload(sys)
sys.setdefaultencoding(‘UTF-8‘) #可以写成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来设置系统编码。
本文出自 “圣骑士控魔之手” 博客,请务必保留此出处http://wutengfei.blog.51cto.com/10942117/1983533
以上是关于为什么在sys.setdefaultencoding之前要写reload(sys)的主要内容,如果未能解决你的问题,请参考以下文章