ZipInputStream (InputStream, Charset) декодирует имя файла ZipEntry ложно
Java 7 должна решить старую проблему с распаковкой zip-архивов с наборами символов, отличными от UTF-8. Это может быть достигнуто с помощью конструктораZipInputStream(InputStream, Charset)
, Все идет нормально. Я могу распаковать zip-архив, содержащий имена файлов с умлаутами в них при явной установке набора символов ISO-8859-1.
But вот проблема: при переборе потока черезZipInputStream.getNextEntry()
, записи имеют неправильные специальные символы в своих именах. В моем случае, умляут & # xFC; & quot; заменяется на «?» характер, который, очевидно, неправильно. Кто-нибудь знает, как это исправить? очевидноZipEntry
игнорируетCharset
его лежащего в основеZipInputStream
, Это выглядит как еще одна ошибка JDK, связанная с zip, но я тоже могу делать что-то не так.
...
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());
...
}