res.setContentType("application/" + contentType + "; charset=GB2312");
res.setHeader("Content-Disposition", "attachment; filename=\"" + fileNm + "\"");
res.setHeader("Cache-Control", "max-age=0");os.write(exportData.getBytes("GB2312"));
部分代码如上
res是HttpServletResponse
现象是保存到本地正常excel里的sheet名也正常生成
但是直接打开的话sheet名出现乱七八糟的字符
res.setHeader("Content-Disposition", "attachment; filename=\"" + fileNm + "\"");
res.setHeader("Cache-Control", "max-age=0");os.write(exportData.getBytes("GB2312"));
部分代码如上
res是HttpServletResponse
现象是保存到本地正常excel里的sheet名也正常生成
但是直接打开的话sheet名出现乱七八糟的字符
解决方案 »
- 怎么控制好处理大量数据时的意外错误
- socket通信
- 有谁知道JAVA的刻度尺类有吗?或者把JSlider的小滑块去掉也行。请求高人出现。
- 在线等,急!!!在Eclipse中怎样调试applet程序?
- 求教jsp中对sql-server数据库的操作问题
- 如何让一个servlet在Tomcat启动时就运行?
- 高手帮我看一下这个java错误说明了什么??
- ##### 加急啊!!请大家帮忙修改下一下小代码!!(在线等待!)
- 100分求热心人,请问怎样使一副图像在指定大小panel内显示???
- 请教实现人机对战的五子棋的α-β剪枝算法代码,最好有注释,急用救命!
- 关于参数传值问题
- 关于log.xml在连接不上apache官方网站不通的情况下,无法加载的问题!!!!!
还有.]都不知道怎么写进去的
---------------------------------------------------------
<%
java.io.BufferedInputStream bis=null;
java.io.BufferedOutputStream bos=null;
try{
String filename=request.getParameter("filename");
filename=new String(filename.getBytes("iso8859-1"),"gb2312");
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition","attachment; filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));
bis =new java.io.BufferedInputStream(new java.io.FileInputStream(config.getServletContext().getRealPath("files/" + filename)));
bos=new java.io.BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
}
catch(Exception e){
e.printStackTrace();
}
finally {
if (bis != null)bis.close();
if (bos != null)bos.close();
}
%> 注意,关键就是setHeader里的filename需要重新编码,格式是ISO-8859-1就OK了