python 中获得系统默认编码为:
1 2 |
import sys print sys.getdefaultencoding() |
而修改系统默认编码应写为:
1 |
<span style="background-color:#FAFAFA;">import sys </span><span style="background-color:#FFFF00;">reload(sys)</span><span style="background-color:#FAFAFA;"> sys.setdefaultencoding('UTF-8')</span> |
为什么需要一个看似多余的reload(sys)呢?
先看下python的模块加载过程:
1 2 3 4 5 6 7 |
# 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文件里有这么一段代码:
1 2 |
if hasattr(sys, "setdefaultencoding"): del sys.setdefaultencoding |
在sys加载后,setdefaultencoding方法被删除了,所以我们要通过重新导入sys来设置系统编码.