提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
公司项目有个业务需求需要将用户上传的信息和图片打包成zip导出,文件夹包含子文件夹和子文件,由于业务需,要求文件夹、子文件夹和子文件都要以中文命名,按照正常流程写完代码后,在本地Windows环境测试一切正常,但部署到Linux服务器后,导出的zip里面的中文都变成了???
一、问题判断
在Linuxf服务器上直接输入命令mkdir 测试
正常生成名为测试的文件夹,但是在Spring Boot项目中
File file = new File("测试文件夹"); file.mkdir();
Linux服务器生成后的文件却变成了
二、解决办法
1.期间尝试了设置文件名称为"UTF-8"
代码如下(举例):
String fileName = "中文测试";
// 将文件名从Unicode编码转换为UTF-8编码
byte[] fileNameBytes = fileName.getBytes("UTF-8");
// 使用UTF-8编码创建文件
File file = new File(new String(fileNameBytes, "UTF-8"));
if (!file.exists())
file.mkdir();
2. 设置"sun.jnu.encoding" 为"UTF-8"
System.setProperty("sun.jnu.encoding","UTF-8");
但是最终生成的文件中文还是变成了???
3.最终解决办法
Linux服务器输入以下命令
locale
查看到当前系统默认编码为 zh_CN.UTF-8
接着输入 vim /etc/locale.conf
将 LANG=zh_CN.UTF-8
改为LANG=en_US.UTF-8
然后保存退出
输入命令 :source /etc/locale.conf
使配置生效
重新输入命令:locale
可以看到已经变过来了
最后服务器重启项目
导出正常