Java 7中被认为与和解压缩zip档案与字符解决一个老问题比UTF-8套等。 这可以通过构造函数来实现ZipInputStream(InputStream, Charset)
。 到现在为止还挺好。 我可以解压包含文件名与他们变音符号时明确设置的ISO-8859-1字符集的zip压缩包。
但这里有一个问题:当通过流使用迭代ZipInputStream.getNextEntry()
条目名称中包含错误的特殊字符。 在我的情况下,变音“ü”是一个“?”代替 性格,这显然是错误的。 是否有人知道如何解决这一问题? 很明显ZipEntry
忽略Charset
及其底层的ZipInputStream
。 它看起来像另一个拉链有关的JDK错误,但我可能做错了什么为好。
...
zipStream = new ZipInputStream(
new BufferedInputStream(new FileInputStream(archiveFile), BUFFER_SIZE),
Charset.forName("ISO-8859-1")
);
while ((zipEntry = zipStream.getNextEntry()) != null) {
// wrong name here, something like "M?nchen" instead of "München"
System.out.println(zipEntry.getName());
...
}