A.问题描述
最开始不愿意使用Python,一大原因是因为Python2默认使用ASCII编码处理中文可以说是一件痛苦的事情。仅从更换默认编码一项变换,就可以说Python3和Python2不算同一门语言。
Python3更换为默认使用Unicode(utf-8)编码,一直使用下来再没有遇到编码问题带来的困挠,似乎编码问题在Python3时代就该完全消失的。但这两天遇到了一个问题。
在调用一个库时,出现了一个异常报错类似如UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128),几经排查之下发现只要该库返回结果包含中文,我这边使用print()打印该结果时就会出现该异常。
B.解决办法
方法一:设置系统所用编码为utf-8
既然问题是系统语言编码所致,那我们在运行前把LC_ALL等环境变量改为utf-8即可;实现的方式有多种,最简单的就是在运行前export。
export LC_ALL="en_US.utf8"
方法二:使用PYTHONIOENCODING
PYTHONIOENCODING=ascii python test_encode.py
方法三: 修改 ~/.bashrc
vim ~/.bashrc
export LC_ALL=en_US.utf8
export LANG=$LC_ALL

本文探讨了Python3中遇到的UnicodeEncodeError异常,该异常在尝试打印包含中文的库返回结果时出现。问题根源在于系统编码。解决方案包括:1) 运行前设置LC_ALL环境变量为utf-8;2) 使用PYTHONIOENCODING环境变量指定编码为ascii;3) 修改.bashrc文件设置LC_ALL和LANG为utf-8。
5971

被折叠的 条评论
为什么被折叠?



