用这段代码下载文件,文件名为中文,用IE文件名就不会乱码,但是火狐就是乱码,什么解决。。response.setContentType("application/msexcel");
response.setHeader("Content-Disposition","attachment; filename=" + new String("电子表格.xls".getBytes("gb2312"),"iso8859-1"));
HSSFWorkbook wb = getWorkBook();
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
response.setHeader("Content-Disposition","attachment; filename=" + new String("电子表格.xls".getBytes("gb2312"),"iso8859-1"));
HSSFWorkbook wb = getWorkBook();
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
中间碰到中文乱码,应该说所有的情况都碰到了吧,解决也是曲折的,经过摸索,总结如下: 1、所有页面都用UTF-8。
2、写过滤器,设置request.setCharacterEncoding("UTF-8")。
3、javascript脚本里用encodeURI(str)。
4、适当的时候,在jsp里用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")。
5、最容易忽略的是使用"":value=" <%=paraFiles%>",一定要有引号。 例子源码:http://download.csdn.net/source/965319
都已经结贴了大哥,这样还是不行,在linux下用IE照样会出问题,结果在网上搜到这个就行了。。
//火狐
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
fileNameTemp = new String(fileNameTemp.getBytes("UTF-8"), "ISO8859-1");
}
//IE
else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
fileNameTemp = URLEncoder.encode(fileNameTemp, "UTF-8");
}