为什么在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来设置系统编码。
转载于:https://blog.51cto.com/wutengfei/1983533