utf-8不是很复杂啊,只需要告诉服务器编码方式就行了,用utf-8吧,早晚一个趋势

解决方案 »

  1.   

    把文件名做个utf-8的转码就行了。
      

  2.   

    String downloadFileName = java.net.URLEncoder.encode(fileName,"gb2312");在jsp中:<a href="http://...../<%=downloadFileName%>"></a>
      

  3.   

    public static String encodeURL( String path ) {
            int maxBytesPerChar = 10;
            int caseDiff = ('a' - 'A');
            char[] hexadecimal = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F'};
            BitSet safeCharacters = new BitSet(256);
            StringBuffer rewrittenPath = new StringBuffer(path.length());
            ByteArrayOutputStream buf = new ByteArrayOutputStream(maxBytesPerChar);
            OutputStreamWriter writer = null;
            try {
                writer = new OutputStreamWriter(buf, "UTF8");
            }
            catch (Exception e) {
                e.printStackTrace();
                writer = new OutputStreamWriter(buf);
            }        for (int i = 0; i < path.length(); i++) {
                int c = (int) path.charAt(i);
                if (safeCharacters.get(c)) {
                    rewrittenPath.append((char)c);
                } else {
                    // convert to external encoding before hex conversion
                    try {
                        writer.write(c);
                        writer.flush();
                    } catch(IOException e) {
                        buf.reset();
                        continue;
                    }
                    byte[] ba = buf.toByteArray();
                    for (int j = 0; j < ba.length; j++) {
                        // Converting each byte in the buffer
                        byte toEncode = ba[j];
                        rewrittenPath.append('%');
                        int low = (int) (toEncode & 0x0f);
                        int high = (int) ((toEncode & 0xf0) >> 4);
                        rewrittenPath.append(hexadecimal[high]);
                        rewrittenPath.append(hexadecimal[low]);
                    }
                    buf.reset();
                }
            }
            return rewrittenPath.toString();
    }-------------调用:<a href='<%=encodeURL("中文.zip")%>'>中文.zip</a>以上代码其实是tomcat source