文件名为中文下载时为乱码,点击下载连接出现的是%16进制数%,请问这该怎么处理?

解决方案 »

  1.   

    URLDecoder.decode(fileName,“GBK“));
      

  2.   

    URLDecoder.decode(fileName,“GBK“)); 正解
      

  3.   

    http://topic.csdn.net/u/20081225/15/7f53258e-4543-4802-8fe5-6ff7033bf9b1.html
    这里看看,文件头要编码,文件路径不要,
      

  4.   

    xiaolong_yuhan的意思是用16进制数保存文件名, 在显示时将16进制数表示的文件名转换成实际的字符串.对吗?这样好象需要写一个javascripte方法.
      

  5.   

    我问的这个里面有解决方法:http://topic.csdn.net/u/20081225/15/7f53258e-4543-4802-8fe5-6ff7033bf9b1.html
      

  6.   

    response.setHeader("Content-Disposition", "attachment;filename="+fileName); 
    这里的文件名fileName要编码:public static String toUtf8String(String s) {
           StringBuffer sb = new StringBuffer();
            for (int i=0;i<s.length();i++) {
                char 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) {
                        System.out.println(ex);
                        b = new byte[0];
                    }
                    for (int j = 0; j < b.length; j++) {
                         int k = b[j];
                         if (k < 0) k += 256;
                         sb.append("%" + Integer.toHexString(k).
                         toUpperCase());
                    }
               }
            }
            return sb.toString();
       } 
    中文参数最好加上URLEncoder: 
    <a href="download.jsp?url= <%=java.net.URLEncoder.encode("中文参数","utf-8")%>"> 获取的时候 
    String url = request.getParameter("url"); 另外写文件名的时候也容易乱码 
    response.setHeader("Content-disposition","attachment;filename="+filename); 
    如果乱码了可以试试对url做以下转码: 
        url = new String(url.getBytes("utf-8"),"ISO-8859-1"); 
        url = new String(url.getBytes("GBK"),"ISO-8859-1"); 
    具体用哪个就看你情况了。