docker容器内中文乱码问题如何彻底有效的解决

发布时间:2022-4-29 14:19

用docker容器部署某应用时,应用需要使用到GIT、SVN等工具拉取代码,当某些项目文件中存在中文名时就会报错。以下是我解决问题的过程:

发现问题:我通过查看日志,发现编码报错:Can't convert string from 'UTF-8' to native encoding.

进入容器查看编码:这里借鉴别人的图, 没保存图片,发现不是UTF-8

临时修改编码:

export LANG=C.UTF-8
或者
LANG=C.UTF-8
source /etc/profile

再次查看编码已经生效,但是问题出现在这里了,使用临时方案修改的编码是基于会话的,也就是说对程序调用不起作用,只对当前窗口有效。

永久修改编码:查阅了网上很多文章,也试验了很多方法,最有效的就是重新生成镜像,并且添加系统环境。注意,经过验证,下面三个变量都需要设置,只设置LANG可能也还会报错。Dockerfile添加下面三行:

最后效果:所有会话都是C.UTF-8编码的,程序也没再报错了。