下载文件名称乱码

JAVA学习网 2017-09-27 07:01:01

·1. 文件下载的时候需要设置响应头

   response.setContentType("application/octet-stream");

  response.setHeader("Content-Disposition", "attachment; filename=" +fileName);  

2.当文件名出现中文的时候,还需要解决文件名乱码的问题

  在IE 和Chrome中使用  

      response.setContentType("application/octet-stream");

    response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));  

  即可解决下载名称乱码的问题,但是在Firefox中依旧乱码,所以使用

      response.setContentType("application/octet-stream");

    response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("gbk"),"ISO-8859-1")); 

  可以实现在这三种浏览器中,下载名乱码的问题

 

  除此之外,还可以对请求头进行判断

   String name = "测试文件.txt";    

    String userAgent = request.getHeader("User-Agent");     

   name = userAgent.contains("MSIE") ?  URLEncoder.encoder(fileName,"utf-8") : new String(name.getBytes("UTF-8");"ISO-8859-1"); 

        response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", name));

 

阅读(791) 评论(0)