解决ie和其他浏览器poi下载excel文件名乱码
2016-04-13 17:50
295 查看
使用poi,做传统的excel导出,然后想在浏览器中,让用户选择另存为,保存用户下载的xls文件,这个时候,可能的是在ie下出现乱码(ie,9,10,11),但在firefox,chrome下没乱码,
因此必须综合判断,编写一个工具类:
Java代码
/**
*
* @Title: processFileName
*
* @Description: ie,chrom,firfox下处理文件名显示乱码
*/
public static String processFileName(HttpServletRequest request, String fileNames) {
String codedfilename = null;
try {
String agent = request.getHeader("USER-AGENT");
if (null != agent && -1 != agent.indexOf("MSIE") || null != agent
&& -1 != agent.indexOf("Trident")) {// ie
String name = java.net.URLEncoder.encode(fileNames, "UTF8");
codedfilename = name;
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等
codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");
}
} catch (Exception e) {
e.printStackTrace();
}
return codedfilename;
}
然后,
Java代码
response.setHeader("Cache-Control", "private");
response.setHeader("Pragma", "private");
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Type", "application/force-download");
title = FileUtil.processFileName(request, title);
response.setHeader("Content-disposition", "attachment;filename=" + title + ".xls");
就可以解决了,注意判断是否ie的时候,ie 11的agent是Trident
因此必须综合判断,编写一个工具类:
Java代码
/**
*
* @Title: processFileName
*
* @Description: ie,chrom,firfox下处理文件名显示乱码
*/
public static String processFileName(HttpServletRequest request, String fileNames) {
String codedfilename = null;
try {
String agent = request.getHeader("USER-AGENT");
if (null != agent && -1 != agent.indexOf("MSIE") || null != agent
&& -1 != agent.indexOf("Trident")) {// ie
String name = java.net.URLEncoder.encode(fileNames, "UTF8");
codedfilename = name;
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等
codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");
}
} catch (Exception e) {
e.printStackTrace();
}
return codedfilename;
}
然后,
Java代码
response.setHeader("Cache-Control", "private");
response.setHeader("Pragma", "private");
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Type", "application/force-download");
title = FileUtil.processFileName(request, title);
response.setHeader("Content-disposition", "attachment;filename=" + title + ".xls");
就可以解决了,注意判断是否ie的时候,ie 11的agent是Trident
相关文章推荐
- IE右键菜单被修改
- IE:获取完整的网页
- IE:脱机浏览网页
- 利用IE收听“广播”
- 清除IE分级审查密码
- IE:添加编辑器
- IE:“自动完成”功能
- IE:如何做到全屏显示
- 给IE加个参数 永远不怕IE主页被修改
- IE:使用搜索助手
- IE:最好用的起始页
- IE:临时文件保存法
- 欲练CSS ,必先解决IE的一些细节分析
- 不同版本IE使用不同css(css条件注释语句用法)
- Orace查询数据出现乱码的问题解决思路
- oracle em 按钮乱码解决办法及em网页变成英文
- 解决ie动态修改link样式,import css不刷新的问题
- 暂时屏蔽 IE 最新 0day的4 种方法
- C#读取中文文件出现乱码的解决方法
- 更改IE浏览器的图标