使用python开发的Flask后端服务框架部署到docker容器中,当涉及到中文路径会直接报错。

通过设置各种python的编码为utf-8,依旧不能解决,因为python3默认已经是utf-8的编码了,查看报错信息为: 'ascii' codec can't encode characters in position 129-132: ....

于是转换思路,查看系统支持的字体命令为: locale -a,发现仅支持

C
POSIX
en_US.utf8

通过执行命令:locale,结果如下

[root@CentOS7x64 locale]# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

这三种字体。那就尝试安装字体,查看命令 Linux 安装zh_CN.utf8,没有安装成功。原来可以直接将宿主机的字体拷贝到docker容器中就可直接使用,拷贝命令:

docker cp -a /usr/lib/locale/ 4eeda02a34fa:/usr/lib/

然后再将系统字体设置为zh_CN.utf8即可。

设置过程:

再次通过命令 locale -a查看是否支持zh_CN.utf8。若已经支持,通过设置。

LANG=zh.CN.utf8

重新加载环境变量

source /etc/profile

再次执行locale,结果为

[root@4]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

中文就可以正常显示了 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐