您的位置:首页 > 编程语言 > Java开发

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: