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')

这样在每次启动的时候就会自动调用该文件,而不需要每次进行手动的修改,一劳永逸 。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容