UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

Pyhton 安装时,默认的编码格式是ascii ,当编码中存在非ascii字符时, python就会报错


查询系统默认的python编码方法:

$ python
import sys
sys.getdefaultencoding()

一般的解决方式将python 默认的编码格式从ascii 设置为 utf-8  

**方法1**  
在解释其中输入

python
import sys
sys.getdefaultencoding()
sys.setdefaultencoding('utf8')

使用上述命令可能会出现AttributeError: 'module' object has no attribute 'setdefaultencoding的错误
,需要执行 reload(sys),这样setdefaultencoding('utf8')就可以顺利的执行了。
但这样操作只会对本次编译器进行修改,重新启动或重新开启编译器后就会初始成原有的ascii,所以下面方法,可以解决一次性修改
系统默认编码的问题  
**方法2**  
在编码的程序中加入以下代码

import sys
reload(sys)
sys.setdefaultencoding('utf8')

但是这种方法繁琐, 每次在代码文件中增加三行,重复而不使用,所以还有一种一劳永逸的方法, 如下
**方法3**  
在python的lib/site-packages/目录下创建一个新的文件 sitecustomize.py ,内容为:

encoding=utf8

import sys
reload(sys)
sys.setdefaultencoding('utf8')

这样在每次启动的时候就会自动调用该文件,而不需要每次进行手动的修改,一劳永逸 。

你可能感兴趣的:(UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128))