java 导出文件在不同的浏览器上名称乱码
2014-09-17 15:56
99 查看
在编写excel文件导出程序的时候遇到一个奇怪的问题,就是在程序中给要导出的文件指定一个中文名字时,在浏览器上出现的下载框中的文件名出现了乱码,如何解决
httpServletResponse.setContentType("application/vnd.ms-excel");
Util.setFileDownloadHeader(httpServletRequest, httpServletResponse, "用户列表.xls");
setFileDownloadHeader函数主要是根据当前用户的浏览器不同,对文件的名字进行不同的编码设置,从而解决不同浏览器下文件名中文乱码问题
/**
* 根据浏览器不同,对文件的名字进行不同的编码设置
* @param request
* @param response
* @param fileName
*/
private 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, "UTF-8");
}else if(StringUtils.contains(userAgent, "Mozilla")){ //google,火狐浏览器
finalFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}else{
finalFileName = URLEncoder.encode(fileName, "UTF-8"); //其他浏览器
}
response.setHeader("Content-Disposition", "attachment; filename=\"" + finalFileName + "\"");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
httpServletResponse.setContentType("application/vnd.ms-excel");
Util.setFileDownloadHeader(httpServletRequest, httpServletResponse, "用户列表.xls");
setFileDownloadHeader函数主要是根据当前用户的浏览器不同,对文件的名字进行不同的编码设置,从而解决不同浏览器下文件名中文乱码问题
/**
* 根据浏览器不同,对文件的名字进行不同的编码设置
* @param request
* @param response
* @param fileName
*/
private 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, "UTF-8");
}else if(StringUtils.contains(userAgent, "Mozilla")){ //google,火狐浏览器
finalFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}else{
finalFileName = URLEncoder.encode(fileName, "UTF-8"); //其他浏览器
}
response.setHeader("Content-Disposition", "attachment; filename=\"" + finalFileName + "\"");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
相关文章推荐
- Java web中不同浏览器间导出Excel文件名称乱码问题解决方案
- Java web中不同浏览器间导出Excel文件名称乱码问题解决方案
- 【poi excel导出】不同浏览器的编码方式,解决下载文件名称乱码
- PHP导出文件乱码在不同浏览器下的解决方案
- 不同浏览器上中文文件名的下载/导出乱码问题(Java)
- Java strtus2文件下载不同浏览器文件名中文乱码处理
- java下载文件文件名针对不同浏览器乱码,文件名中存在括号等乱码问题
- 不同浏览器上中文文件名的下载/导出乱码问题(Java)
- java 导出excel,文件名称是乱码问题
- java文件下载及名称乱码问题
- 下载文件时兼容不同浏览器中文乱码解决
- JAVA/SERVLET 以UTF-8导出CSV文件时产生乱码的解决方法
- 浏览器文件导出、下载(文件名)乱码解决方法
- Excel导出数据时文件名称是乱码
- Java中浏览器的文件下载时文件名乱码问题
- txt excel 导出 文件名称为中文,避免乱码的解决方案
- 兼容各浏览器的文件下载时中文名称乱码的解决方案
- java 下载文件 兼容 ie 火狐 google 浏览器 ,解决下载文件乱码问题
- java从数据库导出.csv文件及中文乱码问题
- PHP解决浏览器 下载文件 中文名称乱码问题--兼容大多浏览器