Python2.7编码问题:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position...解决方法

本人在Ubuntu使用sublime text3运行Python程序时遇到编码问题:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 39: ordinal not in range(128)

此问题出现在:import matplotlib.pyplot as plt 语句中

其原因是matplotlib库中使用了不符合当前sublime text3中Python编码环境的语句,在命令行不会出现此问题。

解决方法:

在Python程序最前面加上以下语句:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

将默认编码设置为utf-8

此时问题解决,但是在每个py脚本加上这句话太麻烦,这时我们只需在出问题的地方加上这三句话。

例如:我在导入matplotlib时出现编码问题,找到编码出错的文件为__init__.py

Python2.7编码问题:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position...解决方法

我们只需在这个__init__.py文件中加入上面三行指令,以后使用matplotlib的py脚本就不会出现此编码问题。

找到__init__.py文件可通过在matplotlib处右键,使用Anaconda的Goto Definition功能。当然也可通过其他方式找到此文件。

Python2.7编码问题:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position...解决方法

__init__.py:

Python2.7编码问题:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position...解决方法