最新消息:www.yxkong.com也可以访问

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

javaWeb yxkong 4216浏览 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()这种方式也能清空缓冲区, 防止页面中的空行等输出到下载内容里去

 

转载请注明:我要编程 » linux 下java解决ie下载中文文件名乱码问题

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 说到点子上了, 找了很久都没解决的问题。太厉害了
    万里独行8年前 (2013-09-26)回复
    • 偶碰到了也纠结了好几天
      鱼翔空8年前 (2013-10-01)