Как я могу правильно распаковать ZIP-архив файлов с ивритскими именами?

(Вопрос о самопередвижении от superuser.com)

Кто-то прислал мне ZIP-файл, содержащий файлы с ивритскими именами (и создан в Windows, не уверен, с каким инструментом). Я использую LXDE в Debian Stretch. Менеджер архива Gnome позволяет распаковать файл, но ивритские символы искажены. Я думаю, что я получаю октеты UTF-8, расширенные в символы Unicode, например, у меня есть файл, чье имя имеет четыре символа и .doc suffic, а символы: 0x008E 0x0087 0x008E 0x0085. Использование утилиты unzip в командной строке еще хуже – она ​​отказывается полностью распаковываться, жалуясь на «Недопустимый или неполный многобайтовый или широкий символ».

Итак, мои вопросы:

  • Есть ли еще одна утилита для декомпрессии, которая будет распаковывать мои файлы с правильными именами?
  • Что-то не так с тем, как файл был сжат, или это просто несовместимость реализаций ZIP? Или даже недостоверность / ошибка Linux-утилит Linux?
  • Что я могу сделать, чтобы получить правильные имена файлов после распаковки с помощью искаженных?

One Solution collect form web for “Как я могу правильно распаковать ZIP-архив файлов с ивритскими именами?”

Похоже, что имена файлов закодированы в одной из проприетарных кодовых страниц Windows ( CP862 , 1255 и т. Д.).

  • Есть ли еще одна утилита для декомпрессии, которая будет распаковывать мои файлы с правильными именами? Я не знаю об утилите zip, которая поддерживает эти кодовые страницы изначально. 7z имеет некоторое понимание кодировок, но я считаю, что это должна быть кодировка, которую ваша система знает в более общем плане (вы выбираете ее, устанавливая переменную среды LANG ), и кодовые страницы Windows, вероятно, не входят в число таких.

    unzip -UU должен работать из командной строки для создания файлов с правильными байтами в их именах (отключив всю поддержку Unicode). Вероятно, это эффект, который вы получили от инструмента GNOME. Кодирование не будет правильным в любом случае, но мы можем исправить это ниже.

  • Что-то не так с тем, как файл был сжат, или это просто несовместимость реализаций ZIP? Или даже недостоверность / ошибка Linux-утилит Linux? Файл, который вы предоставили, не создан портативно. Это не обязательно неправильно для внутреннего использования, когда кодирование фиксировано и известно заранее, хотя спецификация формата говорит, что имена должны быть либо UTF-8, либо cp437, а ваши не являются ни тем, ни другим. Даже между машинами Windows использование разных кодовых страниц не очень хорошо работает, но для компьютеров, отличных от Windows, не существует понятия этих кодовых страниц. Большинство инструментов UTF-8 кодируют свои имена файлов (чего не всегда достаточно, чтобы избежать проблем).

  • Что я могу сделать, чтобы получить правильные имена файлов после распаковки с помощью искаженных? Если вы можете определить кодировку имен файлов, вы можете преобразовать байты в существующие имена в UTF-8 и переместить существующие файлы в нужное имя. Инструмент convmv существу завершает этот процесс в одну команду: convmv -f cp862 -t utf8 -r . попытается преобразовать все внутри . от cp862 до UTF-8.

    Кроме того, вы можете использовать iconv и find чтобы переместить все в правильные имена. Что-то вроде:

     find -mindepth 1 -exec sh -c 'mv "$1" "$(echo "$1" | iconv -f cp862 -t utf8)"' sh {} \; 

    найдет все файлы под текущим каталогом и попытается преобразовать имена в UTF-8.

    В любом случае вы можете поэкспериментировать с разными кодировками и попытаться найти тот, который имеет смысл.


После того, как вы исправили кодировку для вас, если вы хотите отправить эти файлы обратно в другом направлении, возможно, у вас будет такая же проблема на другом конце. В этом случае вы можете выполнить обратный процесс перед тем, как закрепить файлы с помощью -UU , так как это очень сложно исправить в конце Windows.

  • Распаковка некоторых архивов работает на Windows, но не на Linux
  • Менеджер архива не показывает файл с именем «-»
  • Уменьшите размер файла (.jar) в unix
  • Поиск файлов внутри нескольких подкаталогов и zip-каталогов
  • Поиск файлов с определенным размером внутри рекурсивных архивов на молнии
  • синхронизировать два zip-архива (с минимальным вводом-выводом)?
  • Создание справки для цикла для zip-файлов с определенным суффиксом и расширением
  • Преобразование Windows-созданного ZIP в Linux (проблемы с внутренними путями)
  • извлекать только определенную папку Содержимое из архива с zip-файлом в данный каталог
  • Параллельно читать содержимое заархивированного файла без извлечения
  • Понимание среды Linux Back-Slash и звездочки
  • Crack zip-файл с известными частями паролей
  • Linux и Unix - лучшая ОС в мире.