我有一个方法,可以将输入流添加到zip作为一个目录项:
当文件名包含UTF-8字符(如áé...)时,出现问题。在zip文件中,它将被保存为
对于这个例子,我使用的是jdk6,但现在我也尝试了jdk7:
但是一直没有成功。
我也尝试了Apache Commons Zip并设置编码,但也没有成功。
那么我该如何将文件名包含Unicode符号的文件添加到zip中呢?
private void addToZip(InputStream is, String filename) throws Exception {
try {
ZipEntry zipEntry = new ZipEntry(filename);
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = is.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}
zos.closeEntry();
} finally {
IOUtils.closeQuietly(is);
}
}
当文件名包含UTF-8字符(如áé...)时,出现问题。在zip文件中,它将被保存为
?????
,当我在ubuntu 12.10上解压缩时,它看起来像:N├бstroje
而不是Nástroje
。对于这个例子,我使用的是jdk6,但现在我也尝试了jdk7:
zos = new ZipOutputStream(fos, Charset.forName("UTF-8"));
但是一直没有成功。
我也尝试了Apache Commons Zip并设置编码,但也没有成功。
那么我该如何将文件名包含Unicode符号的文件添加到zip中呢?
Cp866
编码,以支持zip存档中的俄语文件名并在查看zip文件内容时正确显示它们。而且它起作用了。是否有一种非Unicode字符集,可以支持您的语言符号?请尝试使用它,而不是utf-8。 - user784540