文件下载中文文件名不显示

原创 2015年11月17日 17:49:35

使用response.setHeader("Content-Disposition","attachment;filename="+fName)下载文件,中文文件名无法显示的问题

今天遇到这么一个情况,在Controller代码中进行文件下载:

  其中file_name是中文,然后通过如下代码下载

复制代码
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename="+file_name);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(file_uri());
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
    outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();
复制代码

假设file_name的内容是:“工程文档.docx”

那么下载的结果就是一个名为“docx”的文件(文件名+后缀名),显然,文件名中的中文字符丢失了

上网查了资料,大体的原因就是header中只支持ASCII,所以我们传输的文件名必须是ASCII,当文件名为中文时,必须要将该中文转换成ASCII。 

解决办法如下:

response.setContentType("application/octet-stream");
file_name = new String(file_name.getBytes(), "ISO-8859-1");
//或是file_name = URLEncoder.encode(file_name,"UTF-8");
response.setHeader("Content-Disposition","attachment;filename="+file_name);
// 其他代码略
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wwd0501/article/details/49890881

java 文件下载 文件名称中文不显示

String fileName = “文件名称.doc” try { String fileName = new String(downFileName.getBytes(), “...
  • zhlin110228323
  • zhlin110228323
  • 2017-02-08 13:06:06
  • 2840

java web应用文件下载(包括中文文件名乱码处理)

 Java web下载文件功能的确很简单。如下代码片段String fileName ="....";response.setHeader("Content-disposition","attachm...
  • lovingprince
  • lovingprince
  • 2008-07-18 14:12:00
  • 12770

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

Java开发中,文件上传下载是很常用的功能。实际开发中遇到了中文名不显示的问题,一开始以为是后台代码的原因,网上查了一些资料,原来是Header中只支持ASCII,传输的文件名必须是ASCII。...
  • RickyIT
  • RickyIT
  • 2016-12-21 17:49:01
  • 4152

Content-disposition","attachment; filename=中文名 乱码

文件下载:"Content-disposition","attachment; filename=中文名 乱码>>>解决方案   2009-03-20 11:12:36|  分类: 默认分类 ...
  • llwan
  • llwan
  • 2012-11-15 12:40:45
  • 7726

java实现zip的压缩和解压(支持中文文件名)

http://blog.csdn.net/tanksyg/article/details/49927825  用过Java做压缩或解压的都知道,jdk提供的zip只能按UTF-8格式...
  • fangquan1980
  • fangquan1980
  • 2017-04-14 17:16:03
  • 1742

java上传下载文件,中文文件名不显示或乱码

java上传下载文件,中文文件名不显示或乱码
  • LM5463640
  • LM5463640
  • 2017-01-11 16:21:05
  • 1924

下载中文名文件问题

我在做下载中文名的文件, 要在浏览器弹出的保存对话框中正常显示中文名字 现在可以正常显示中文文件名了 ,但是出现下面一个问题:-------------------------------------...
  • dotyboy
  • dotyboy
  • 2006-11-24 23:30:00
  • 1294

文件下载,文件名有中文及空格无法显示问题

使用response.setHeader(“Content-Disposition”,”attachment;filename=”+fName)下载文件, 中文文件名无法显示的问题及空格处理**该问...
  • zhoumengshun
  • zhoumengshun
  • 2017-06-05 13:04:10
  • 1449

文件下载解决中文乱码(十二)

上一节我们演示的下载文件的文件名都是英文的。我们来看看文件名是中文的时候,会是什么情况。 java代码 package com.ken.content; import java.io.F...
  • csdn_kenneth
  • csdn_kenneth
  • 2017-12-09 19:47:36
  • 333

关于java中文件下载中文乱码的事

String fileName = request.getParameter("filename");   fileName = new String(fileName.getBytes("iso-...
  • qq_33321897
  • qq_33321897
  • 2016-04-13 13:23:18
  • 519
收藏助手
不良信息举报
您举报文章:文件下载中文文件名不显示
举报原因:
原因补充:

(最多只允许输入30个字)