首先文件名是是以utf-8编码保存在数据库中,文件名暂定为"1_中文文件123.txt
",然后作如下处理来下载
response.setContentType("application/octet-stream;charset=UTF-8");
fileName=java.net.URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
此时在ie下面点击文件下载的时候能够正确显示中文名称"1_中文文件123.txt%0A
",但是文件名的结尾却出现%0A字符(个人猜测是结束符的 utf-8编码);但是此时在firefox下面却显示"1_%E4%B8%AD%E6%96%87%E6%96%87%E4%BB %B6123.txt%0A
"
然后我又试了另一种方案
response.setContentType("application/octet-stream;charset=UTF-8");
fileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
此时在ie下面下载的时候弹chu的文件名是乱码;而在firefox下面却正确显示"1_中文文件123.txt
"。
解决方案:
public String getFileName(String filename, HttpServletRequestWrapper reqw){
String agent = reqw.getHeader("USER-AGENT");
if(null != agent && -1 != agent.indexOf("MSIE")){
filename = URLEncoder.encode(filename,"UTF8");
}else if(null != agent && -1 != agent.indexOf("Mozilla")){
filename = MimeUtility.encodeText(filename,"UTF8","B");
}
return filename;
}
分享到:
相关推荐
java导出文件文件名处理
java遍历文件下面的所有文件并输出文件名 java遍历文件下面的所有文件并输出文件名
JAVA根据文件名检索文件JAVA根据文件名检索文件JAVA根据文件名检索文件JAVA根据文件名检索文件JAVA根据文件名检索文件JAVA根据文件名检索文件JAVA根据文件名检索文件
使用本文的代码,你将可以让 IE(Internet Explorer)、Opera、Firefox 及 Chrome 的用户享受到没有乱码且支持空格文件名的文件输出引擎,同时支持文件名中各种像“# $ % ^ &”等常见的符号,如 "Microsoft.Asp.Net....
我上传的是一个servlet,里面有详细的说明,自己看看就知道怎么做了
java操作文件,得到文件名,大小,时间,及修改时间java操作文件,得到文件名,大小,时间,及修改时间java操作文件,得到文件名,大小,时间,及修改时间
java实现根据文件名查找本地文件,该程序可直接放在eclipse或者Myeclipse中则可运行,不需要下载其他什么工具包,为开发人员节省了很多时间
Java生成、修改文件夹和文件名,Java创建目录或文件夹,并修改、删除、重命名文件夹或文件名称,使用进行的文件操作实例。 super("目录和文件的创建、删除和更名"); //调用父类构造函数 jtfPath=new ...
以下代码 我做的网页是点击文件直接下载 直接下载下来了,一开始的文件名是上传到oss时以id命名的名字,现在下载的时候想改名,遇到了问题,所以写了这篇博客 首先是后台代码 /** * 附件下载 * <p> * * @param ...
Java实现文件下载并解决中文文件名乱码
1.Java保存的文件名必须与类名一致; 2.如果文件中只有一个类,文件名必须与类名一致; 3.一个Java文件中只能有一个public类; 4.如果文件中不止一个类,文件名必须与public类名一致; 5.如果文件中不止一个类,...
之前上传了一个通过Flash实现多文件上传,但是在IE正常运行,当有后台过滤和鉴权时,FireFox 不能正常上传。经过反复研究学习,最终实现了IE 和FireFox 兼容问题。之所以在有后台鉴权时firefox和360浏览器无法正常...
java实现的简单的按照文件名检索文件,输入任意字符串(比如“123”)则返回本地文件中文件名包含字符串“123”的所有文件和文件夹 及其路径,还能分盘符检索
C#HTML导出excel时文件名,IE,火狐浏览器不兼容,乱码。故此将ExcelHelper.FileName(Request.ServerVariables["HTTP_USER_AGENT"].ToUpper(), $"文件名{DateTime.Now:_yyyyMMdd}", out filename, out encoding);
JAVA 根据Url 接口 获取文件名称和类型,亲测可用。输入参数地址即可。
主要介绍了详解关于java文件下载文件名乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java实现获取本地文件夹下面的所有文件名,只用一个方法,简单而不简单
在不使用从url获取下载文件名的情况下获取下载文件服务器指定的文件名。此规范是依据IE、Chrome等浏览器下载文件使用规范制作
JAVA下载网络文件,解决路径或文件名含中文问题的工具类!