ZipInputStream (InputStream, Charset) decodifica o nome do arquivo ZipEntry falsamente

O Java 7 deve corrigir um problema antigo ao descompactar arquivos zip com conjuntos de caracteres diferentes de UTF-8. Isso pode ser conseguido pelo construtorZipInputStream(InputStream, Charset). Por enquanto, tudo bem. Eu posso descompactar um arquivo zip contendo nomes de arquivos com umlauts neles quando definir explicitamente um conjunto de caracteres ISO-8859-1.

Mas aqui está o problema: ao iterar sobre o fluxo usandoZipInputStream.getNextEntry(), as entradas têm caracteres especiais errados em seus nomes. No meu caso, o trema "ü" é substituído por um "?" personagem, que é obviamente errado. Alguém sabe como consertar isso? ObviamenteZipEntry ignora oCharset do seu subjacenteZipInputStream. Parece mais um bug do JDK relacionado ao zip, mas eu também posso estar fazendo algo errado.

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

questionAnswers(1)

yourAnswerToTheQuestion