java文件下载和导出文件名乱码浏览器兼容性问题
实例:
String poorName= dataMap.get("NAME").toString();
String villageName = dataMap.get("ADDRESS").toString();
String filename=villageName+"-"+poorName+".doc";
response.setContentType("application/doc");
final String userAgent = request.getHeader("USER-AGENT");
if(StringUtils.contains(userAgent, "MSIE")){//IE浏览器
filename = URLEncoder.encode(filename,"UTF-8");
}else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器
filename = new String(filename.getBytes(), "ISO8859-1");
}else{
filename = URLEncoder.encode(filename,"UTF-8");//其他浏览器
}
response.addHeader("Content-Disposition", "attachment;filename="
+filename);/这里设置一下让浏览器弹出下载提示框,而不是直接在浏览器中打开
Writer out = response.getWriter();
也可以直接把方法提取出来供以后直接使用:
setFileDownloadHeader函数主要是根据当前用户的浏览器不同,对文件的名字进行不同的编码设置,从而解决不同浏览器下文件名中文乱码问题
public static void setFileDownloadHeader(HttpServletRequest request, HttpServletResponse response, String fileName) {
final String userAgent = request.getHeader("USER-AGENT");
try {
String finalFileName = null;
if(StringUtils.contains(userAgent, "MSIE")){//IE浏览器
finalFileName = URLEncoder.encode(fileName,"UTF8");
}else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器
finalFileName = new String(fileName.getBytes(), "ISO8859-1");
}else{
finalFileName = URLEncoder.encode(fileName,"UTF8");//其他浏览器
}
response.setHeader("Content-Disposition", "attachment; filename=\"" + finalFileName + "\"");//这里设置一下让浏览器弹出下载提示框,而不是直接在浏览器中打开
} catch (UnsupportedEncodingException e) {
}
}
java文件下载和导出文件名乱码浏览器兼容性问题的更多相关文章
- java导出文件IE/Google文件名乱码兼容
导出文件名乱码解决方案: String agent = request.getHeader("User-Agent"); boolean isMSIE = (agent != ...
- FireFox浏览器导出文件名乱码
解决方案1 String codedFileName = "导出文件名.xls"; String agent = request.getHeader("USER-AGEN ...
- Java 文件下载功能 解决中文乱码
Html部分 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- javaweb 导出文件名乱码的问题解决方案
fileName = new String(fileName.getBytes("ISO8859-1"), "UTF-8"); 或者 String finalF ...
- 关于java文件下载文件名乱码问题解决方案
JAVA文件下载时乱码有两种情况: 1,下载时中文文件名乱码 2,下载时因为路径中包含中文文件名乱码,提示找不到文件 解决方法见下面部分代码 response.setContentType(" ...
- 火狐浏览器导出EXCEL 表格,文件名乱码问题
牢骚:今天又是一个不太平的日子,打开任务表一看里面有一堆bug,其中有一个就是今天要说的这个关于商品导出的问题,本功能是临时授命接一个任务,本来呢这个导出功能在系统各大模块已经都很成熟了,但是总有一个 ...
- Excel导出不同浏览器下文件名乱码问题
解决思路:通过请求头中的User-Agent参数中的信息来区分不同浏览器 public Object exportPz(HttpServletRequest request, HttpServletR ...
- Java 使用IE浏览器下载文件,文件名乱码问题
使用Servlet实现文件下载功能时,使用IE下载出现文件名乱码; 网上常见的解决办法是通过"user-agen"来判断浏览器: if (req.getHeader("u ...
- 浏览器兼容性--IE11以及Edge等下载文件的中文名出现乱码,前后端解决方案
项目中有用到文件下载功能,之前在处理下载时对IE浏览器下文件下载名进行过处理,测试也没有问题,但是功能上线后,业务反馈IE11文件下载文件名依然乱码.打印User-Agent字符串如下: IE11 U ...
随机推荐
- P2特征(一)
很多人在提到项目的特征,肯定能说出来很多的内容,但是在英国体系下,项目的特点有哪些呢?这些特点引深的内容又有什么深度的含义. 项目具有临时性:很多人都知道项目是临时的,结束了就团队成员 ...
- Sql 2008 的常用函数
1.LEN 函数:返回数据的长度 ') 返回:8 2.ASCII函数:返回字符串最左边的ascii值 SELECT ASCII('abc') 返回:97 3.LEFT函数:从左边开始截取指定长度的字符 ...
- iOS常用开发技巧
iOS开发过程中,总有那么一些个小问题让人纠结,它们不会让程序崩溃,但是会让人崩溃.除此之外,还将分享一些细节现在我通过自己的总结以及从其他地方的引用,来总结一下一些常见小问题. 本篇长期更新,多积累 ...
- console在调试中的常见用法
console在不打断程序运行的情况下在控制台输出我们想要看到的信息: 一般情况下我们用来输入信息的方法主要是用到如下四个: 1.console.log 用于输出普通信息 2.console.info ...
- DevExpress.chartControt画趋势图
private void DrawLine(DataTable dt) { Myalysis.Series.Clear(); //图标位置 Myalysis.Legend.AlignmentHoriz ...
- 自己对js对原型链的理解
js对象分为2种 函数对象和普通对象 函数对象 比如 function Show(){}var x=function Show2(){}var b=new Function("show3&q ...
- TYVJ1035 棋盘覆盖
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 给出一张n*n(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩 ...
- github 相关英语
github 相关英语 repository n. 仓库 A repository contains all the files for your project, including the rev ...
- js 去除字符串中间的空格
function trims(str){ return str.replace(/[ ]/g,""); //去除字符串中间的空格 }
- margin()与offset()的区别
margin() 简写属性在一个声明中设置所有外边距属性. offset() 方法返回或设置匹配元素相对于文档的偏移(位置).