在linux(ubuntu)下,输出文字时报错UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-2: ordinal not in range(128),经过查找方法1和方法2(方法2需要下载包,有时网络不佳,就选择方法1)都可以,记录备忘。
- 方法1
-
使用python命令查看输出内容的编码方式
>>>import sys >>>sys.stdout.encoding 'ANSI_X3.4-1968' # 编码方式是ANSI_X3.4-1968,所以任何中文都会报错。ASCII本来就不包含中文,所以一般发现这种错误就是把ASCII换成utf8
-
使用PYTHONIOENCODING
运行python的时候加上PYTHONIOENCODING=utf-8,即:PYTHONIOENCODING=utf-8 python ***.py
-
方法2
所用的Linux系统不支持中文,遇见输出中文就报错。
-
安装中文支持包language-pack-zh-hans
sudo apt-get install language-pack-zh-hans
-
修改/etc/environment(在文件的末尾追加)
LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh:en_US:en"
-
修改/var/lib/locales/supported.d/local(没有这个文件就新建,同样在末尾追加)
en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8 zh_CN.GBK GBK zh_CN GB2312
-
执行命令
sudo locale-gen
-
对于中文乱码是空格的情况,安装中文字体解决。
sudo apt-get install fonts-droid-fallback ttf-wqy-zenhei ttf-wqy-microhei fonts-arphic-ukai fonts-arphic-uming