python3遇到中文编码‘ascii‘ codec can‘t encode characters 的问题
制作好Docker镜像,上传到服务器上,然后遇到
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 39-45: ordinal not in 中文编码错误的问题。
记录一下解决方案:
在python2中,也遇到过此问题,当时博主只在python脚本中添加
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
但是,楼主是在 python3中遇到这个问题,Python3已经默认是utf-8编码了,可用
print(sys.getdefaultencoding())
显示 utf-8
,没问题
于是我用
print(sys.stdout.encoding)
好家伙,竟然显示 ANSI_X3.4-1968
这可能是系统编码导致
于是乎
在终端输入
locale
显示
可以看到当前编码格式为POSIX,而这种编码格式不支持中文
楼主用
locale -a
查看容器所有语言环境
看到一行 C.UTF-8
,这个是支持中文编码的
于是,在运行python 脚本前,将C.UTF-8添加到环境变量中,如下
LANG=C.UTF-8
source /etc/profile
python3 test.py