Java ZipCoder Исключение - PullRequest
       12

Java ZipCoder Исключение

0 голосов
/ 25 февраля 2019

Я создаю файловый менеджер на Java (пока только для Windows).Пользователь может перемещаться внутри zip-файлов, как они могут в локальных папках, с помощью NIO & ZipFileSystem.

Все отлично работает - за исключением определенных файлов внутри zip-файлов, которые содержат некоторые «специальные» символы -например файл с именем: GlkEspañol.dll.

Если я использую кодировку по умолчанию ZipFileSystem (UTF-8) - я получаю это исключение для zip-файлов, которые содержат файлы с этими специальными символами, по крайней мере, в некоторых случаях:

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: MALFORMED[1]
    at jdk.zipfs/jdk.nio.zipfs.ZipCoder.toString(ZipCoder.java:90)
    at jdk.zipfs/jdk.nio.zipfs.ZipCoder$UTF8.toString(ZipCoder.java:64)
    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.getString(ZipFileSystem.java:938)
    at jdk.zipfs/jdk.nio.zipfs.ZipPath.toString(ZipPath.java:603)

В результате я не увидел другого выбора, кроме как вернуться к кодировке Windows-1252 для ZipFileSystem.Теперь я не получаю никаких исключений, но имена файлов выглядят как мусор.

Я протестировал этот же zip-файл с несколькими другими файловыми менеджерами (не на основе Java), и они отображают файлы просто отлично.

Кто-нибудь еще сталкивался с такой же проблемой?Я до сих пор не уверен, что это ошибка Java или что-то.Что я могу с этим поделать лучше, чем перейти на Windows-1252?

...