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名出现乱七八糟的字符

解决方案 »

  1.   

    像这样的名字吗?.csv]writers(1)帮你up
      

  2.   

    http://www.blogjava.net/alex/archive/2006/06/14/52855.aspx
      

  3.   

    to smyl9989(☆☆☆☆☆) :你解决的是文件名,而楼主问的是文件的sheet名不正常
      

  4.   

    就是contentType定义的字符一部分串到sheet里了,
    还有.]都不知道怎么写进去的
      

  5.   

    download.jsp文件
    ---------------------------------------------------------
    <%
      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了