docker 容器中不支持中文解决办法
·
使用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=
中文就可以正常显示了
更多推荐
所有评论(0)