Python 中文编码
使用 Python2.X 开发绕不开的一个问题就是中文编码
Python2.X 系列默认使用的编码方式是 ASCII,所以直接在字符串中使用中文会抛出异常
# file: main.py print "简单教程,简单编程"
运行就会报错
$ python main.py File "main.py", line 2 SyntaxError: Non-ASCII character '\xe7' in file main.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
考验我们耐心的时候到了
检查文件编码
首先即使我们把文件的编码改成 UTF-8 还是会报同样的错误
解决方法
最简单的解决方法竟然是:
在文件的开头写上
# -*- encoding:utf-8 -*-
或
#coding=utf-8
就像下面的文件一样
# -*- encoding:utf-8 -*- # file: main.py print "简单教程,简单编程"
我们再运行一下
$ python main.py 简单教程,简单编程
问题就这样解决了
更复杂的情况
如果上面的办法还解决不了,那么还有一种办法,就是重置 Python 解释器的编码
在文件除了注释以外代码的开头,写上
import sys reload(sys) sys.setdefaultencoding("utf-8")
就像下面的文件一样
# -*- encoding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding("utf-8") # file: main.py print "简单教程,简单编程"
为什么?为什么要多此一举的 reload(sys)
那是因为 Python 解释器在启动的时候会加载 site.py 或者其它类似文件
而在这个 site.py 里竟然有一句
if hasattr(sys, "setdefaultencoding"): del sys.setdefaultencoding
直接把我们辛苦 encoding:utf-8
设置的编码给忽视了
所以我们要通过重新导入 sys 来设置系统编码