Java Servlet实现文件下载(解决中文乱码)

分类:软件编程
阅读:720
作者:majingjing
发布:2016-10-24 17:16

之前在公司做文件下载的时候就出现过各种浏览器兼容问题, 出现问题一般都是浏览器对响应头的解析出现问题,导致抛出各种各样的问题. 现在刚好有朋友问到,将再次将代码整理记录下.

private String getStr(HttpServletRequest request, String realFileName)
   throws Exception {
  String browName = null;

  String clientInfo = request.getHeader("User-agent");
  System.out.println(clientInfo);
  if (clientInfo != null && clientInfo.indexOf("MSIE") > 0) {//
   // IE采用URLEncoder方式处理
   if (clientInfo.indexOf("MSIE 6") > 0
     || clientInfo.indexOf("MSIE 5") > 0) {// IE6,用GBK,此处实现由局限性
    browName = new String(realFileName.getBytes("GBK"),
      "ISO-8859-1");
   } else {// ie7+用URLEncoder方式
    browName = java.net.URLEncoder.encode(realFileName, "UTF-8");
   }
  } else {//其他浏览器
   browName = new String(realFileName.getBytes("GBK"), "ISO-8859-1");
  }
  return browName;
 }