工作记录:j2ee开发中经常遇到下载导出乱码问题。

在编写excel文件导出程序的时候遇到一个奇怪的问题,就是在程序中给要导出的文件指定一个中文名字时,在浏览器上出现的下载框中的文件名出现了乱码,如何解决?

httpServletResponse.setContentType("application/vnd.ms-excel");//这是excel文件的
//response.setContentType("application/msword;charset=ISO8859-1");//这是word的
 
Util.setFileDownloadHeader(httpServletRequest,httpServletResponse,"用户列表.xls");

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) {
         }
     }


你可能感兴趣的:(下载导出乱码)