0

在我的项目中,我有上传 zip 的功能。

当用户上传任何 zip 文件时,我的系统会提取该文件并向用户显示文件夹结构。

如果 zip 文件包含名称像 Õ.txt 的文件,那么它将像 O.txt 一样显示。

ZipFile zipFile = new ZipFile(filePath, Charset.forName("UTF8"));
Enumeration entries = zipFile.entries();
while(entries.hasMoreElements())
{

ZipEntry entry = (ZipEntry)entries.nextElement();
System.out.println(entry.getName());

}

以上是我读取 zip 条目的代码。

现在,当我尝试获取条目名称时,它会给我 O.txt 而不是 Õ.txt。

我已经用 JDK 7 测试了这段代码,但结果相同。

我也尝试过不同的编码类型,如 CP437、IBM437、ISO-8859-1 和 ISO-8859-1,但结果没有变化。

所以请建议我在从 zip 文件获取条目时可以支持所有字符的方式

感谢和问候亚丁

4

1 回答 1

0

您的环境似乎有问题,不一定是您访问 ZIP 文件的方式。这是一个检查清单:

  • ZIP 文件是否真的包含具有该名称的 UTF-8 编码条目?使用 7-Zip 之类的工具进行验证。
  • JVM 是否使用正确的字符集?检查系统属性 file.encoding。
  • 您的输出终端/窗口的编码是否与此设置匹配?

毕竟,只有处理链的所有元素都使用正确的设置,结果才会正确。

于 2012-08-06T12:16:48.357 回答