Docker 运行Python报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position xxxxx


今天在创建的docker中运行YOLO代码voc_python.py时报错:
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 32-35: ordinal not in range(128)

应该是编码集的问题,所以查看了docker支持的编码集。

1.查看docker容器编码格式:

执行locale,可以看到当前编码格式为POSIX,而这种编码不支持中文
Docker 运行Python报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position xxxxx

2.查看容器所有语言环境

locale -a
Docker 运行Python报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position xxxxx
可以看到不支持中文,所以下载中文语言包:
apt-get -y install language-pack-zh-hans
然后增加中文编码集:
export LANG=zh_CN.UTF-8(临时的,如果要永久可以加入~/.bashrc 或 ~/.zshrc)


接着locale查看:
Docker 运行Python报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position xxxxx
有了中文语言包。
然后locale -a:
Docker 运行Python报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position xxxxx
到这里就不会产生中文乱码了,也就可以运行Python程序中有中文的代码了。