Docker内报错UnicodeEncodeError: ‘ascii‘ codec can‘t encode character ‘\u516c‘ in position 0

docker容器内运行程序报错如下

UnicodeEncodeError: 'ascii' codec can't encode character '\u516c' in position 0: ordinal not in range(128)

查阅后发现大部分博客给的解决方法都是在代码开头加上下面三行,但是并不管用

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

最终通过参考中的文章找到了解决办法,首先查看当前环境的默认编码方式

>>> import sys
>>> sys.stdout.encoding
'ANSI_X3.4-1968'
>>> 

ANSI_X3.4-1968 是一种ASCII编码,而程序会输出中文,所以编码错误。解决办法是

vi /etc/profile 打开profile文件

再最后加上 export LANG="C.UTF-8" 并保存退出

执行 source /etc/profile

再查看默认编码

>>> import sys
>>> sys.stdout.encoding
'UTF-8'
>>> 

运行程序正常不会报错,问题解决!

参考

https://blog.csdn.net/songyu0120/article/details/88680562

https://blog.csdn.net/f95_sljz/article/details/105734915

https://blog.csdn.net/chj_1224365967/article/details/108996821

上一篇:python : 'ascii' codec can't de


下一篇:dubbo报文通用格式相关源码