java压缩zip⽂件中⽂乱码问题(转——作者:riching)
本⼈遇到了同样的问题,⽤了以下⽅案,奇迹般的解决了。我很纳闷为什么,经理说:好读书,不求甚解,不要问为什么...
⽤java来打包⽂件⽣成压缩⽂件,有两个地⽅会出现乱码
1、内容的中⽂乱码问题,这个问题⽹上很多⼈给出了解决⽅法,两种:修改sun的源码;使⽤开源的类库ls.zip.ZipOutputStream和ls.zip.ZipEntry,这两个类ant.jar中有,可以下载使⽤即可,毫⽆疑问,选择后者更⽅便
2、压缩⽂件注释的中⽂乱码问题:zos.setComment("中⽂测试");这个问题在⽹上查了半天没看到有⼈解释,遂只能⾃⼰想办法解决。在⾃⼰机器上的⼯程创建的测试类,没有任何问题,但是在公司的项⽬中使⽤⼀直出现乱码,通过使⽤设置编码的ls.zip.ZipOutputStream默认使⽤项⽬的编码⽅式,理论上讲utf-8也是⽀持中⽂的,是在想不通为啥还是乱码,通过setEncoding⽅法改成gbk即可解决
附上⼀段压缩⽂件的代码
Java代码收藏代码
package 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 ls.zip.ZipEntry;
import ls.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 Name()));
truncated zip file怎么解决int c;
while ((c = ad()) != -1) {
zos.write(c);
}
zos.setEncoding("gbk");
zos.setComment("中⽂测试");
zos.closeEntry();
zos.close();
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。