关于java文件下载文件名乱码问题解决方案

关于java文件下载文件名乱码问题解决方案

做为一名程序员,大家应该都遇到过乱码的问题吧!这篇文章是自己解决关于关于java文件下载文件名乱码问题的处理:

String fileName = "下载的文件名";

String userAgent = request.getHeader("User-Agent");

//针对IE或者以IE为内核的浏览器:

if (userAgent.contains("MSIE")||userAgent.contains("Trident")) {

fileName = java.net.URLEncoder.encode(fileName, "UTF-8");

} else {

//非IE浏览器的处理:

fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");

}

response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName));

response.setContentType("application/vnd.ms-excel;charset=utf-8");

response.setCharacterEncoding("UTF-8");

这样子就可以了!

顺便贴一下:各个浏览器关于request.getHeader("User-Agent"); 的输出内容:

chrome : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36

FIREFOX:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0

IE8 : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET4.0C; .NET4.0E)

IE9 : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

IE10 : Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:10.0) like Gecko

IE11 : Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

360 极速模式:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36

360 的IE9模式:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

时间: 2024-08-27 13:01:32

关于java文件下载文件名乱码问题解决方案的相关文章

Java文件下载文件名乱码

文件下载文件名乱码主要是没有对文件名进行编码,这里适用的浏览器主要包括(IE,火狐,谷歌,360) 代码如下 //火狐浏览器 if(ServletActionContext.getRequest().getHeader("USER-AGENT").toLowerCase().indexOf("firefox") >0){ return new String(文件名.getBytes(), Const.CHARSET_ISO8859_1); } //其他浏览器

文件下载文件名乱码解决

if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){ response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(product.getRealName1(), "UTF-8")); }else{ res

在FireFox/IE下Response中文文件名乱码问题解决方案

在FireFox/IE下Response中文文件名乱码问题解决方案 作者: 字体:[增加 减小] 类型:转载 只是针对没有空格和IE的情况下使用Response.AppendHeader()如果想在FireFox下输出没有编码的文件,并且IE下输出的文件名中空格不为+号,就要多一次判断了,接下来将详细介绍下感兴趣的朋友可以了解下,或许对你有所帮助 发现很多园子里的人在处理Response下载文件名是使用这个方法 Response.AppendHeader("Content-Disposition

文件下载文件名乱码

public static String getDownloadFileName(HttpServletRequest request, String fileName) { String agent = request.getHeader("User-Agent").toUpperCase(); try { if (agent.indexOf("MSIE") > 0 || agent.indexOf("TRIDENT") > 0 |

java文件下载的文件名乱码

// //下载文件,并处理文件名乱码 public void downloadFile(HttpServletRequest request,HttpServletResponse response){    String path = request.getSession().getServletContext().getRealPath("/upload/文档1.doc");     // path是根据日志路径和文件名拼接出来的      File file = new File

Struts2 .apk 文件下载及解决中文文件名乱码问题(转)

1.Tomcat服务器不能下载 .apk类型文件 Android的APK安装包不能下载或下载文件是以 .zip为后缀名而不是 .apk为文件后缀名时,需在 Tomcat 的 web.xml 配置文件中加入以下 MIME 类型: 1 <mime-mapping> 2 <extension>apk</extension> 3 <mime-type>application/vnd.android.package-archive</mime-type>

通过js跳转url下载包含中文的文件乱码问题解决方案(java)

问题描述: 通过js 跳转url的方式下载中文文件,因为中文文件名乱码找不到文件. 解决方案: 经过测试在tomcat 8 及以上不会出现这个问题: 以下解决方案博主亲测有效,如果您有更好的解决方案,请直接留言.互相进步. 如果是使用 tomcat7 在conf.server.xml中添加如下配置: URIEncoding="UTF-8" 配置完整: <?xml version="1.0" encoding="UTF-8"?> <

Java中FTPClient上传中文目录、中文文件名乱码问题解决方法【好用】

转: Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录名及文件名中的中文显示为“??”. 原因: FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码. 解决方案: 1.将中文的目录或文件名转为iso-8859-1编码的字符.参考代码: 复制代码 代码如下: String name="目录名或文件名"; name=

通过freemarker出word的技术解决方案_通过点击一个按钮临时实现生成一个word,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

 通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名改成ftl文件 详细步骤如下: 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(site.wzmc)?default("")}标识当网站名称为空的时候显示空值,如果这里如果不做控制,在实际项目中会显示错误!) 另外