如题。
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String str=new String(request.getParameter("returnInfo").getBytes("8859_1"));
String name=new String(request.getParameter("filename").getBytes("8859_1"));
这里name应该为健康表
System.out.println("name: "+name);
response.setContentType("application/vnd.ms-excel");
String filename="attachment;filename=/"+name;
response.addHeader("Content-Disposition",filename);
response.getWriter().print(str);  
response.getWriter().flush();  
response.getWriter().close();  
name显示正确中国字。但是出现下载框时,没有出现想要的excel类型和中文filename,而是未知文件类型,默认的是英文文件名而不是想要的“健康表”

解决方案 »

  1.   

    name里面包含文件的后缀名了么。response.addHeader("Content-Disposition", "attachment; filename=report.xls");
      

  2.   

    fileName = URLEncoder.encode(fileName, "utf-8");
      

  3.   


    private String parse(String s) {
    StringBuffer sb = new StringBuffer();
    char c;
    for (int i = 0; i < s.length(); i++) {
    c = s.charAt(i);
    if (c >= 0 && c <= 255) {
    sb.append(c);
    } else {
    byte[] b;
    try {
    b = Character.toString(c).getBytes("utf-8");
    } catch (Exception ex) {
    logger.error("ConsumeSortAction.parse " + ex);
    b = new byte[0];
    }
    int k=0;
    for (int j = 0; j < b.length; j++) {
     k= b[j];
    if (k < 0)
    k += 256;
    sb.append("%" + Integer.toHexString(k).toUpperCase());
    }
    }
    }
    return sb.toString();
    }
    转码绝对好用
      

  4.   

    你输出的name的值是什么    有带后缀名么? 大哥,说清楚点噻....
      

  5.   

    要带后缀名的,LZ
    你自己name没有带后缀,人家下载一个叫   健康表的文件,肯定是未知类型啦
      

  6.   

    String str=new String(request.getParameter("returnInfo").getBytes("8859_1"));
    String name=new String(request.getParameter("filename").getBytes("8859_1"));
    //name=URLEncoder.encode(name,"GB2312");
    System.out.println(name);
    response.setContentType("application/vnd.ms-excel");
    String filename="attachment;filename=/"+name+".xls";
    System.out.println(filename);
    filename=URLEncoder.encode(filename,"utf-8");
    response.addHeader("Content-Disposition",filename);
    response.getWriter().print(str);  
    response.getWriter().flush();  
    response.getWriter().close();  
    输出的filename为:attachment;filename=/学校体育成绩.xls
    但弹出的下载框中默认名不是/学校体育成绩.xls???而是英文乱码
      

  7.   

    我已经给你转码的代码了,自己看4楼写的attachment;filename=/学校体育成绩.xls汉字调用那个转码方法