字符集问题,我有一个上传zip的功能。在我的项目ZipEntry.getName()
当用户上传任何压缩,我的系统中提取文件并显示文件夹结构,用户。
如果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文件中获取条目的时间支持所有的字符
感谢&问候 雅鼎
雅鼎,我估计java的正确读取该文件的名称,但如果你看到输出的控制台不支持Unicode字符。如果您调试代码,您是否看到正确的名称? – Augusto 2012-08-06 12:12:45
嗨 是的,我通过调试器也看到了这件事。 感谢和问候 montu v boda – 2012-08-06 14:17:54
您是否尝试过使用Cp1252编码?它适用于ApacheCommons-compress库,它使用JDK6 http://stackoverflow.com/a/20523390/185565 – Whome 2013-12-11 15:41:25