Я создаю файловый менеджер на 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?