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

博客讲述了在Windows环境下通过接口上传包含中文名的文件到Linux服务器时遇到的乱码问题。作者排查了服务器编码、上传代码、Content-Type设置、Tomcat编码以及Docker镜像的编码设置。最终发现Docker镜像的编码为POSIX,导致乱码,通过修改为zh_CN.UTF-8并重启容器解决了问题。
摘要由CSDN通过智能技术生成

日前刚刚解决的乱码问题,在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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值