当前位置: 代码网 > it编程>编程语言>Java > Springboot下载excel文件中文名乱码问题及解决

Springboot下载excel文件中文名乱码问题及解决

2024年06月12日 Java 我要评论
springboot下载excel文件中文名乱码通常在下载文件时会通过httpservletresponse对象设置一些属性以及文件名核心代码如下:response.setheader("conten

springboot下载excel文件中文名乱码

通常在下载文件时会通过httpservletresponse对象设置一些属性以及文件名

核心代码

如下:

response.setheader("content-disposition", "attachment;filename=" + urlencoder.encode(file_name, "utf-8") + "");
response.setheader("content-disposition", "attachment;filename=" + file_name+"");
response.setcontenttype("application/vnd.ms-excel;charset=utf-8");
response.setcharacterencoding("utf-8");

红色部分是最终正确的姿势,最开始我是用紫色部分的代码实现的,但是在用postman调用接口的时候发现下载下来的文件名如果有中文就会出现乱码

查了一通资料,改用红色部分实现,但是用postman下载下来过后发现文件名称是经过编码的。

类似这样:

%e9%a2%84%e7%ae%97%e5%af%bc%e5%85%a5.xlsx

于是我试了很多次还是这样,最后偶然发现在浏览器里面调用接口下载下来的文件名是正常的,不知道postman为啥始终不行

springboot文件下载的时候文件名出现问题

1.一开始文件名全是下横线__

经查询之后,添加了这行代码

response.setheader("content-disposition",
        "attachment;filename=" + urlencoder.encode(homeworkname, "utf-8"))

2.下横线的问题解决了

但出现中文乱码,出现%%字符

再次查找之类,将上述的代码改成以下,解决乱码

response.setheader("content-disposition", "attachment;filename="+  homeworkname +";filename*=utf-8''"+urlencoder.encode(homeworkname,"utf-8"));

除此之外,发现也可以用这种方法

response.setheader("content-disposition",
        "attachment;filename=" + new string(homeworkname.getbytes("utf-8"), "iso8859-1"));

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com