解决docker容器中⽂乱码,修改docker容器编码格式
前台上传⽂件到服务器后,服务器返回给前台的⽂件列表中出现中⽂乱码,所有的中⽂⽂件名全部变成?,英⽂⽂件名则正常显⽰。
问题经过定位,发现后台代码的multipartfile类在执⾏transterto的⽅法时就发⽣了此异常,然⽽配置⽂件集中的multipartResolver以及encodingFilter均已经设置成了UTF-8,排除代码异常。kubectl exec进⼊到docker容器中进⾏查看时发现,⽂件在容器中也是中⽂⽂件名显⽰异常。查看docker容器编码格式:执⾏locale命令;可以看到当前编码格式为POSIX,⽽这种编码格式不⽀持中⽂
解决办法:locale -a查看容器所有语⾔环境
C.UTF-8可以⽀持中⽂,只需要把容器编码设置为C.UTF-8即可
1.临时修改:
locale
locale -a
docker进入容器
LANG=C.UTF-8  (有的是zh_CN.UTF-8,不过我在本地没发现这种编码)
source /etc/profile
2.永久修改:修改Dockerfile
在Dockerfile中添加⼀⾏
ENV LANG C.UTF-8
重新制作docker镜像,docker run -ti [镜像] 进⼊容器后执⾏locale发现编码格式已经被修改为C.UTF-8,之前出现的中⽂⽂件名乱码问题也没有了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。