使用docker部署项目时遇到的python编码问题之UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters

使用docker部署项目时遇到的python编码问题之UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters,第1张

概述使用docker在服务器部署项目相关问题解决出现问题:yum不能使用,报错信息为:File“/usr/bin/yum”,line30exceptKeyboardInterrupt,e:使用python时,报错信息为:UnicodeEncodeError:‘ascii’codeccan’tencodecharactersinposition0-1:ordinalnotinrange 使用docker在服务器部署项目相关问题解决出现问题:

yum 不能使用,报错信息为:@R_419_6852@ “/usr/bin/yum”, line 30 except KeyboardInterrupt, e:

使用python时,报错信息为:
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)

分析问题及解决:

在解决问题时发现yum不能使用的另一种原因就是/usr/bin/yum /usr/bin/python not found 啥啥啥的,于是就好奇,不是yum么,怎么何python有关,终于查到了症结,详细解释及解决方法:https://www.huaweicloud.com/articles/281ee1a68e3482a041eb2d72360e0b68.html 。
总结起来就是yum是用python写的,而且是用python2.x写的,那我们都知道python3.x何python2.x相比较变化就比较大。所以要sudo vi /etc/bin/yum (或者是在root身份下直接 vi /etc/bin/yum),然后在上面改成 #!/usr/bin/python2.x。 至于具体是2.x,你可以通过ls /etc/bin/python | grep python 看一下自己系统的是那个版本的。
然后就可以正常使用啦!

在docker当中制作了一个镜像,是在centos7的基础之上进行了一些python3的配置,然后在执行python3 @R_419_6852@name.py时报错,就是上面的报错信息,于是在网上查了很多文章和解决办法。
原因就是自己电脑上面用的编码方式是"POSIX",至于详细解释,大家可以去网上自己查一下,总之就是不是utf-8的编码,所以问题就变得简单了,让自己的系统使用utf-8进行编码和解码。
他们的办法都是对的,总结起来就是三个步骤,但是还是要辩证的使用,不能盲目去按照别人的套路进行:
(i) 进入系统(此时docker的容器环境和正常的服务器一样了),检查系统中正在使用以及安装的编码集
locale 进行查看当前系统正在使用的编码方式

locale -a查看当前系统上已经安装的比编码集

(ii) 在系统中安装中国地区的utf-8编码集(如果已经安装也就是有了zh_CN.UTF-8编码集,那么此步略过)

安装中文语言包
yum install -y kde-l10n-Chinese

安装 glibc-common

yum reinstall -y glibc-common

安装或者说生成指定类型的zh_CN.UTF-8编码集

localedef -i zh_CN -f UTF-8 zh_CN.UTF-8

具体的解释附上超链接https://blog.51cto.com/arthur376/1915170
然后还是要查看一自己的系统上面是不是真的安装好了zh_CN.UTF-8编码集,命令在上一个小步骤哦。没有的话就看看这些步骤中是哪个失误了。
(iii) 更新系统的配置,使用这种zh_CN.UTF-8编码集
更新文件呢,因为我用的是centos7。所以,只是针对centos7这个版本的来解决。
有的人说要更改/etc/locale.conf这个配置文件,有的人说要在/etc/pro@R_419_6852@当中修改,反正我只修改/etc/locale.conf没用,所以就两个都修改了。
对于/etc/locale.conf这个配置文件echo ‘LANG=”zh_CN.UTF-8“ ’ > /etc/locale.conf 会自动覆盖里面原来的内容。
对于/etc/pro@R_419_6852@,可以使用

echo	'export  LANG=zh_CN.UTF-8'  >> /etc/pro@R_419_6852@echo	'export  LANGUAGE=zh_CN.UTF-8' >> /etc/pro@R_419_6852@echo	'export  LC_TIME=zh_CN.UTF-8' >> /etc/pro@R_419_6852@

最后,就是一个连续的

source /etc/locale.conf

source /etc/pro@R_419_6852@

(iv)检验系统确实是使用了zh_CN.UTF-8编码集(注意:很容易在这个地方犯错,我就是没有注意检查这个步骤,无限次重新删除镜像,新建镜像),命令还是第一步当中的。

然后,大功告成,可以安心的使用python执行代码了。
另外附上一个高手的docker *** 作细节:
在Docker@R_419_6852@当中实现(但效果并不是很理想,大家可以参考一下)
https://cloud.tencent.com/developer/article/1507591

总结

以上是内存溢出为你收集整理的使用docker部署项目时遇到的python编码问题之UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters全部内容,希望文章能够帮你解决使用docker部署项目时遇到的python编码问题之UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1188891.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存