【发布时间】:2012-08-06 12:05:18
【问题描述】:
在我的项目中,我有上传 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 文件获取条目时可以支持所有字符的方式
感谢和问候 亚丁
【问题讨论】:
-
Yatin,我认为 java 可以正确读取该文件名,但是您看到输出的控制台不支持 unicode 字符。如果你调试代码,你看到正确的名字了吗?
-
嗨,是的,我也通过调试器看到了那个东西。感谢和问候 montu v boda
-
你试过Cp1252编码吗?它适用于我在 JDK6 stackoverflow.com/a/20523390/185565 中使用的 ApacheCommons-compress 库