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 来设置系统编码

Python2 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.