1

ПРИМЕЧАНИЕ. Этот вопрос отличается от распаковки ZIP с заданной кодировкой, поскольку ни одно из этих решений не работает, и я не уверен, что правильно функционирующая программа распаковки может даже получить правильное имя файла.

Существует zip-файл с именем файла символов японского языка. unzip может указывать кодировки символов, которые обычно работают для получения правильных имен файлов. (Это не на странице man или info для распаковки для моего дистрибутива, но в выводе справки исполняемого файла.)

Но это не работает для некоторых zip-файлов, включая этот. Это коллекция файлов для анимационной программы MikuMikuDance. Некоторые файлы имеют «мусорное» имя файла при использовании с unzip -O sjis -l archive.zip или при распаковке с помощью file-roller.

Другой файл в архиве ссылается на имена мусорных файлов, хотя он относится к кодировке имени Shift-JIS, а не к UTF8. Он пытается загрузить эти файлы, поэтому, если они названы неправильно, они не могут загрузить. Вопрос здесь заключается в том, является ли zip-файл таким, чтобы правильные имена файлов могли быть извлечены другой программой, и были ли они правильно названы в системе загрузчика.

Желаемое имя файла:«Figure_ そ の 他 .fx» ("other" на японском языке). Похоже, в zip-файле есть два разных представления, одно из которых «����», что означает SJIS, интерпретируемый как UTF8, а в других местах - U+0082 и некоторые тайские символы:

бинарный файл grep Эта вторая версия является выводом из unzip, с опцией -O sjis или без нее . Кажется, нет никакого способа преобразовать это обратно в исходное имя файла.

Оригинальный zip-файл можно скачать здесь (25 МБ), а его содержимое можно открыть с помощью бесплатной программы MikuMikuDance, хотя для MikuMikuEffect используется файл «.fx», для работы которого требуется несколько собственных библиотек в Wine. Но, возможно, кто-то может ответить на этот вопрос без zip-файла.

Хранят ли zip-файлы альтернативное имя файла, которое обычно не используется? Отображаются ли обратные слэши в виде знаков иены на японских компьютерах, так или иначе связанных с тем, что имя файла не используется? Если вы возьмете строку, которая отображается как «Normalmap Effect\Skin\Figure_���̑�.fx», и передадите ее в iconv -f sjis -t utf8 , вы получите «Normalmap Effect ¥ Skin ¥ Figure_ そ の 他 .fx ». Википедия говорит о «дополнительном поле»; это используется для хранения и извлечения «плохого» имени файла?

2 ответа2

3

Я только что проверил это для себя, используя предоставленную вами ссылку, и скачал файл, озаглавленный Thank You For You Project.zip, который мне пришлось распаковать, используя пароль 864 с 7-zip, и не обнаружил никаких проблем. У меня был правильный файл?

0

Обратная косая черта, отображаемая в виде знаков иены, не связана. Второе имя файла - это имя файла UTF-8, как описано в разделах 4.5, 4.6 и Приложении D к .ZIP спецификация

В этом конкретном случае имя файла было передано программе упаковки в Shift-JIS, но программа упаковки упаковок предположила, что это ISO-8859-11 или TIS-620 (тайские кодировки). Предполагалось, что один из байтов ввода был преобразован или преобразован в другой символ в Unicode, что препятствует восстановлению правильного имени файла.

Когда используется дополнительное поле Info-ZIP Unicode Path, такие программы, как 7z или unzip Info-ZIP, предполагают, что оно допустимо, и игнорируют поле основного имени файла и параметр -O используемый с unzip для установки кодировки исходного кода.

Сопровождающие программы, вероятно, приветствуют патч, который добавляет опцию для отмены этого поведения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .