ZipInputStream (InputStream, Charset) dekodiert den ZipEntry-Dateinamen falsch

Java 7 soll ein altes Problem beim Entpacken von Zip-Archiven mit anderen Zeichensätzen als UTF-8 beheben. Dies kann vom Konstruktor erreicht werdenZipInputStream(InputStream, Charset). So weit, ist es gut. Ich kann ein Zip-Archiv mit Dateinamen mit Umlauten entpacken, wenn ich explizit einen ISO-8859-1-Zeichensatz einstelle.

Aber hier ist das problem: beim iterieren über den stream mitZipInputStream.getNextEntry()haben die Einträge falsche Sonderzeichen im Namen. In meinem Fall wird der Umlaut "ü" durch ein "?" Charakter, der offensichtlich falsch ist. Weiß jemand, wie man das behebt? OffensichtlichZipEntry ignoriert dasCharset des zugrunde liegendenZipInputStream. Es sieht nach einem weiteren Zip-bezogenen JDK-Fehler aus, aber ich könnte auch etwas falsch machen.

...
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());
    ...
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage