Java文件下载中文名不显示&乱码
2016-12-21 17:49
253 查看
问题
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 + "\"");
原因
为什么用ISO-8859-1,看度娘的解释ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
URLEncoder为什么用UTF-8
参考
网上也有一些大牛做了一些编码设置的测试,可以参考这里。还有一些编码基础知识。相关文章推荐
- Java文件下载中文名不显示&乱码
- Java: IE & Firefox下载文件中文乱码的兼容代码
- 整理java文件下载(中文乱码、火狐浏览器乱码、空格变+号、文件名包含空格时文件名可能显示不全等问题)
- java上传下载文件,中文文件名不显示或乱码
- Java文件下载中文名不显示&乱码
- Java实现文件下载并解决中文文件名乱码
- java实现文件下载 中文文件名乱码的解决
- java web 利用 commons-fileupload-1.2 实现文件上传 解决 中文乱码& 非文件属性的读取
- java 下载文件时中文出现乱码解决方案
- asp.net中文件下载时中文名称显示为乱码
- JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案
- java软件托盘MenuItem 显示中文出现框框乱码、读取ini配置文件乱码
- 解决FlashFXP5 不能下载中文文件名文件的问题(显示文件名中文正常下载文件名是乱码)
- java web应用文件下载(包括中文文件名乱码处理)
- Java strtus2文件下载不同浏览器文件名中文乱码处理
- java web应用文件下载(包括中文文件名乱码处理)
- java 下载文件,中文文件名称乱码的问题
- Android HttpURLConection下载文件乱码以及adb shell 显示中文乱码
- window xp 使用SecureCRT上传和下载文件 && 中文乱码处理
- Struts2 通过"流"下载文件时显示中文文件名