ПРИМЕЧАНИЕ. Этот вопрос отличается от распаковки 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 и некоторые тайские символы:
Эта вторая версия является выводом из 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 ». Википедия говорит о «дополнительном поле»; это используется для хранения и извлечения «плохого» имени файла?