文件上传,服务器文件名中文乱码文件上传,服务器文件名中文乱码

  • Post author:
  • Post category:其他


日前刚刚解决的

乱码

问题,在windows本地调用文件上传接口时,中文名显示没问题,但是一旦文件上传到Linux服务器之后,就会出现中文乱码问题,如中文名变成???等,看了很久找到问题,以此记录一下解决过程。


1

.服务器的编码问题,查看服务器编码,命令:locale

显示编码为支持中文编码的zh_CN.UTF-8,于是排除此可能


2

.上传代码中没有处理,翻看代码对文件名进行处理

重新部署后还是没有效果


3

.vue前端上传文件时Content-Type设置,以下是Content-Type传值介绍

选择multipart/form-data,并且加了编码格式

结果还是不行


4

.tomcat编码是否设置

已经设置


5

.docker镜像中编码,进入镜像命令:kubectl exec -it 容器名 bash -n pod名,查看编码:locale

编码为POSIX,此编码下中文好像会出现乱码情况,于是尝试更改为zh_CN.utf8

命令:

LANG=zh_CN.utf8

source /etc/profile


注意

:此命令是临时修改,若永久修改,在Dockerfile中添加一行ENV LANG zh_CN.utf8,然后重启容器

再测试上传,中文名正常显示,至此解决问题


备注

:有些镜像进去以后,可以先执行locale -a,查看当前容器是否有zh_CN.utf8,如果没有,好像C.UTF-8也可以,如果不想用,可以安装一下zh_CN.utf8,在Dockerfile中添加一行

RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8