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基础教程栏目。
以上就是java压缩文件乱码问题的详细内容。
