Java 7应该通过解压缩包含UTF-8以外字符集的zip存档来解决一个老问题。这可以通过构造函数ZipInputStream(InputStream, Charset)
来实现。到现在为止还挺好。在明确设置ISO-8859-1字符集时,我可以解压缩包含文件名的zip存档,其中包含变音符号。
但这就是问题:当使用ZipInputStream.getNextEntry()
迭代流时,条目的名称中包含错误的特殊字符。在我的情况下,变音符号“ü”被“?”取代性格,这显然是错误的。有人知道如何解决这个问题吗?显然,ZipEntry
会忽略其基础Charset
的{{1}}。它看起来像是另一个与zip相关的JDK错误,但我也可能做错了。
ZipInputStream
答案 0 :(得分:7)
zipStream = new ZipInputStream(
new BufferedInputStream(new FileInputStream(archiveFile), BUFFER_SIZE),
Charset.forName("Cp437")
);
现在它就像一个魅力。很抱歉打扰你。我希望这有助于其他遇到类似问题的人。