моя операционная система - Arch Linux. Я пытаюсь извлечь ZIP-архив, который содержит символы CJK в именах файлов. Скорее всего, он был создан на компьютере с Windows.
Я попытался распаковать утилиту, и она выдает недопустимые символы. То же самое с 7za, но с немного другими. Моя переменная LANG была установлена в en_US.UTF-8, но установка ее в ja_JP.ujis, похоже, не имеет никакого эффекта. Я предполагаю, что это означает, что имена файлов CJK были закодированы в архив в формате, отличном от UTF-8, и мне нужно преобразовать его в UTF-8, чтобы они отображались правильно.
Я знаю о convmv, и я использовал сценарий оболочки для проверки любой возможной кодировки из convmv --list
безрезультатно. У меня есть Unicode-эквиваленты имен файлов по большей части, но в формате, который является громоздким, чтобы переименовать их вручную, но с их помощью я могу проверить, было ли преобразование успешным или нет.
Наблюдая за шестнадцатеричным дампом ls и с позиционным удержанием, я пришел к выводу, что U+4EBA (人) представляется как 0xC9 0x6C с выходом распаковки и 0xC2 0x90 0x6C с выходом 7za. Это также означает, что не исключено, что я не имею дело с оригинальной кодировкой.
Итак, почему два zip-экстрактора дают разные результаты, и есть ли другие способы помочь мне правильно преобразовать эти имена файлов в UTF-8?