下载文件名中文乱码

文件名中文乱码

背景

下载zip压缩包,中文文件名乱码不能正常显示

代码如下:

            String fileName = "人员信息.zip";
            response.setContentType("application/octet-stream;charset=UTF-8");
            response.setContentType("application/x-zip-compressed;charset=UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.addHeader("Pargam", "no-cache");
            response.addHeader("Cache-Control", "no-cache");
            response.addHeader("Access-Contro1-A11ow-0rigin", "*");
            File zip = ZipUtil.zip(new File("D://file/sys/"));
            ServletOutputStream output = response.getOutputStream();
            FileInputStream input = new FileInputStream(zip);
            byte[] buff = new byte[1024 * 10];
            int len = 0;
            while ((len = input.read(buff)) > -1) {
                output.write(buff, 0, len);
            }
            output.flush();
            output.close();

下载结果:在这里插入图片描述

Bug修复:

String fileName = URLEncoder.encode("人员信息.zip", "UTF-8");

修复后的下载结果:

在这里插入图片描述

结论

使用URLEncoder对文件名进行处理之后,完美解决问题。

URLEncoder的作用:

客户端在进行网页请求的时候,网址中可能会包含非ASCII码形式的内容,比如中文。

而直接把中文放到网址中请求是不允许的,所以需要用URLEncoder编码地址,

将网址中的非ASCII码内容转换成可以传输的字符

编译后的响应头:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值