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