七叶笔记 » java编程 » java压缩文件乱码问题

java压缩文件乱码问题

用java来打包文件生成压缩文件,有两个地方会出现乱码:

1、内容的中文乱码问题:修改sun的源码。使用开源的类库org.apache.tools.zip.ZipOutputStream和org.apache.tools.zip.ZipEntry,这两个类ant.jar中有,可以下载使用即可。

2、压缩文件注释的中文乱码问题:zos.setComment("中文测试");通过使用设置编码的方法(zos.setEncoding("gbk");)发现问题,测试项目的编码方式为gbk,而默认编码是utf-8。

org.apache.tools.zip.ZipOutputStream默认使用项目的编码方式,通过setEncoding方法改成gbk即可解决。

java压缩文件代码:

package com.compress;    import java.io.BufferedInputStream;  import java.io.BufferedOutputStream;  import java.io.DataInputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;    import org.apache.tools.zip.ZipEntry;  import org.apache.tools.zip.ZipOutputStream;    public class CompressEncodingTest {        /**      * @param args      * @throws Exception      */      public static void main(String[] args) throws Exception {          File f = new File("中文测试.txt");          ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(                  new FileOutputStream("zipTest.zip"), 1024));          zos.putNextEntry(new ZipEntry("中国人.txt"));          DataInputStream dis = new DataInputStream(new BufferedInputStream(                  new FileInputStream(f)));          zos.putNextEntry(new ZipEntry(f.getName()));          int c;          while ((c = dis.read()) != -1) {              zos.write(c);          }            zos.setEncoding("gbk");          zos.setComment("中文测试");            zos.closeEntry();          zos.close();      }    }

更多java知识请关注java基础教程栏目。

相关文章