gpt4 book ai didi

java - 如何将带有 utf-8 名称的 zip 条目添加到 zip

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:33 25 4
gpt4 key购买 nike

我有一个方法可以将 inputStream 作为条目添加到 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 中呢?

最佳答案

似乎这条线解决了我的问题:

        zos.setCreateUnicodeExtraFields(UnicodeExtraFieldPolicy.ALWAYS);

谁能解释一下这是做什么的以及它为什么有效?

关于java - 如何将带有 utf-8 名称的 zip 条目添加到 zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15519493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com