System.out.println("downloaded filename is "+filename);//这里输出的文件名是好好的
response.setContentType("application/msword;charset=GB2312");
response.setHeader("Content-disposition", "attachment;filename="+ filename);
以上就是我的response的设置,但是在下载word文档的弹出框里的文件名却是乱码,请问这是为什么?

解决方案 »

  1.   

    文件名转换为UTF8编码试试
    给你一个我写的方法:
      public static String toUtf8String(String str) throws Exception
      {
        String result = "";
        StringBuffer sb = new StringBuffer();
        for (int i=0;i<str.length();i++)
        {
            char c = str.charAt(i);
            if (c >= 0 && c <= 255)//若不是汉字则不进行编码转换
            {
                sb.append(c);
            }
            else
            {
                byte[] bb;
                try
                {
                    bb = Character.toString(c).getBytes("utf-8");//编码转换
                }
                catch (Exception ex)
                {
                    System.out.println(ex);
                    bb = new byte[0];
                }
                for (int j = 0; j < bb.length; j++)
                {
                    int k = bb[j];
                    if (k < 0) k += 256;
                    sb.append("%" + Integer.toHexString(k).toUpperCase());
                }
            }
        }
        result = sb.toString();
        return result;
      }