Java文件下载中文名不显示&乱码

问题

Java开发中,文件上传下载是很常用的功能。实际开发中遇到了中文名不显示的问题,一开始以为是后台代码的原因,网上查了一些资料,原来是Header中只支持ASCII,传输的文件名必须是ASCII。为什么Header只支持ASCII呢?

解决方案

直接贴代码

filename = new String(filename .getBytes(), "ISO-8859-1");
//filename = URLEncoder.encode(file_name,"UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");

原因

  1. 为什么用ISO-8859-1,看度娘的解释

    ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。

  2. URLEncoder为什么用UTF-8
    CSDN

参考

网上也有一些大牛做了一些编码设置的测试,可以参考这里。还有一些编码基础知识。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值