Docker容器中文乱码(修改docker容器编码格式)的解决方案

An ·
更新时间:2024-11-10
· 917 次阅读

前台上传文件到服务器后,服务器返回给前台的文件列表中出现中文乱码,所有的中文文件名全部变成?,英文文件名则正常显示。

  问题经过定位,发现后台代码的multipartfile类在执行transterto的方法时就发生了此异常,然而配置文件集中的multipartResolver以及encodingFilter均已经设置成了UTF-8,排除代码异常。kubectl exec进入到docker容器中进行查看时发现,文件在容器中也是中文文件名显示异常。查看docker容器编码格式:执行locale命令;可以看到当前编码格式为POSIX,而这种编码格式不支持中文

  解决办法:locale -a查看容器所有语言环境

  C.UTF-8可以支持中文,只需要把容器编码设置为C.UTF-8即可

    1.临时修改:

       locale
       locale -a
       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,之前出现的中文文件名乱码问题也没有了。

以上所述是小编给大家介绍的Docker容器中文乱码(修改docker容器编码格式)的解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持!

您可能感兴趣的文章:详解修改docker时区及docker常用命令Docker 常用命令整理并介绍Dockerfile 部署java web的环境详解详解ASP.NET Core Docker部署解决Docker容器时区及时间不同步问题的方法Docker 解决容器时间与主机时间不一致的问题三种解决方案Mac系统上用Docker搭建lamp环境Docker for windows pull镜像文件的安装位置改变的方法Docker出现Cannot connect to the Docker daemon. Is the docker daemon running on this host错误解决办法Docker创建镜像两种方法详解Docker push镜像失败解决方法Docker 常用命令整理及使用注意事项总结



编码 乱码 解决方案 Docker

需要 登录 后方可回复, 如果你还没有账号请 注册新账号