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