这是因为编码的问题,缺省的不能处理汉字。
我这有一个以前自己写的class,你可以把这个class文件替换掉你的rt.jar里的ZipInputStream。
简单的方法便是,用WinRar打开rt.jar然后进入到java.util.zip中,把这个新的DETZipInputStream.class拖到WinRar中,便完成了。在处理汉字的时候使用这个类进行zip解压缩就可以了。经过测试没有问题,能处理中文和英文。
如果需要,留下mail我可以发给你。
我这有一个以前自己写的class,你可以把这个class文件替换掉你的rt.jar里的ZipInputStream。
简单的方法便是,用WinRar打开rt.jar然后进入到java.util.zip中,把这个新的DETZipInputStream.class拖到WinRar中,便完成了。在处理汉字的时候使用这个类进行zip解压缩就可以了。经过测试没有问题,能处理中文和英文。
如果需要,留下mail我可以发给你。
DETZipInputStream zip = new DETZipInputStream(
new FileInputStream(zipFileName), "字符编码方式如gbk之类");
out = new ZipOutputStream(ff);
for (int i = 0; i < filePath.length; i++) {
FileInputStream inFile = new FileInputStream(filePath[i]);
BufferedInputStream in =
new BufferedInputStream(new FileInputStream(filePath[i]));
out.setEncoding("你要指定的字符集");
out.putNextEntry(new ZipEntry(filePath[i]));
int c;
while ((c = inFile.read()) != -1)
out.write(c);
in.close();
}
out.close();试过,可以:)