欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

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

来源: javaer 分享于  点击 26777 次 点评:28

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


目录
  • Springboot下载excel文件中文名乱码
    • 核心代码
  • Springboot文件下载的时候文件名出现问题
    • 1.一开始文件名全是下横线__
    • 2.下横线的问题解决了
  • 总结

    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"));

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

    您可能感兴趣的文章:
    • 解决SpringBoot请求返回字符串中文乱码的问题
    • SpringBoot获取application.properties文件中文乱码问题及解决
    • SpringBoot响应出现中文乱码的解决方法
    • 解决springboot读取application.properties中文乱码问题
    • 解决SpringBoot项目读取yml文件中值为中文时,在视图页面显示乱码
    相关栏目:

    用户点评