linux 下java解决ie下载中文文件名乱码问题
原创
©著作权归作者所有:来自51CTO博客作者yxkong的原创作品,请联系作者获取转载授权,否则将追究法律责任
今天通过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()这种方式也能清空缓冲区, 防止页面中的空行等输出到下载内容里去