linux 下java解决ie下载中文文件名乱码问题

2013/08/27 5271点热度 0人点赞 2条评论

今天通过poi导出文件的时候,发现在服务器上的时候通过ie总是乱码,刚开始不知道服务器是linux,就把服务器上的环境拿下来做测试,本地都正常,就是在服务器上的时候出问题,后来他们说服务器是linux,然后我就晓得啥问题了.

 

注意:如果文件名中有空格的话,会linux服务器部署IE访问下载的时候会把空格转成+号

  response.reset();
//中文文件名支持,在window服务器上这行代码就可以了
String encodedfileName=new String(fileName.getBytes(), "ISO8859-1");;
//获取请求request对象
HttpServletRequest request = Struts2Utils.getRequest();
//在linux服务器上 IE下载必须加上下面这段代码,window也行,
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
            encodedfileName = URLEncoder.encode(fileName, "UTF-8");
  }
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedfileName + "\"");

response.reset();的作用

//如果有换行,对于文本文件没有什么问题,但是对于其它格式,比如AutoCAD、Word、Excel等文件下载下来的文件中就会多出一些换行符//0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。同//时response.reset()这种方式也能清空缓冲区, 防止页面中的空行等输出到下载内容里去

 

yxkong

这个人很懒,什么都没留下

文章评论

  • 万里独行

    说到点子上了, 找了很久都没解决的问题。太厉害了

    2013/09/26
    • 鱼翔空

      @万里独行 偶碰到了也纠结了好几天

      2013/10/01