据说用java.util.zip压缩的话是要有这个中文问题,因为它好像在内部写死了编码方式,可以找找用别的类试试

解决方案 »

  1.   

    不要用jdk的压缩包
    改用ant.jar里面的压缩组件就行了
      

  2.   

    //在classpath中引入ant.jar的包
    import java.io.*;  
    import java.util.*;
    import java.io.File;
    import org.apache.tools.zip.*;public  class  CDGGzip  
    {  
      //boolean  packFrame  =  false;  
      private File srcPath =new File("d:"+File.separator+"邢晓宁");
      private String outFilename=new String("d:"+File.separator+"邢晓宁.zip");
    private int len=srcPath.listFiles().length;
    private String[] filenames = new String[len];
    public void setSrcPath(String src){
        srcPath=new File(src);
      }
      public File getSrcPath(){
       return srcPath;
      }
    public void setOutFilename(String out){
        outFilename=out;
      }
      public String getOutFilename(){
       return outFilename;
      }    public void gzip(){
    byte[] buf = new byte[1024];
       try {
       File[]  files  =  srcPath.listFiles(); 
       for(int  i=0;i<len;i++)
       {
       //if(!files[i].isDirectory())
    filenames[i]=srcPath.getPath()+File.separator+files[i].getName();
    }
       ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
       for (int i=0; i<filenames.length; i++) 
       {
       FileInputStream in = new FileInputStream(filenames[i]);
       out.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i].getName()));
       int len;
       while ((len = in.read(buf)) > 0) 
       {
       out.write(buf, 0, len);
       }   out.closeEntry();
       in.close();
          }      out.close();
        } 
        catch (IOException e) 
        {
         System.out.println(e); 
        }
      }
      
      public static void main(String arg[]){
       CDGGzip cdggzip=new CDGGzip();
       cdggzip.gzip();
      }
      
    }
      

  3.   

    你也可以修改jdk源码中的zipinputstream.java,zipoutputstream.java的编码方式,然后把rt.jar重新打包.