Я хочу извлечь большую резервную копию моего жесткого диска, сжатого с помощью 7zip под Windows, в мою установку Debian Wheezy. Я использую следующую командную строку:

7z x -pmypasswordhere file.7z

Если сейчас есть файл или папка с именем Äpfel (по-немецки «яблоки»), то на жестком диске Linux получится Ãpfel.

Как я могу решить эту проблему? Я попытался использовать следующее, но это говорит о том, что командная строка недопустима:

7z x -scsWIN -pmypasswordhere file.7z

... где ключ -scs объясняется так: "-scs {UTF-8 | WIN | DOS}: установить кодировку для файлов списка".

Я сжал файл в Windows 8 на NTFS-разделе с 7z 9.30 64bit. Вариантами были прочность на сжатие Ultra. Я зашифровал имена файлов и их содержимое с помощью AES-265. Моя установка Debian Wheezy немецкая, поэтому echo $ LANG - это "de_DE.UTF-8".

3 ответа3

3

Чтобы "äpfel" стал «¤pfel», необходимо получить äpfel {UTF-8} и преобразовать его с помощью ISO-8859-15 в UTF8. Тогда вы получите ¤pfel {UTF-8}.

Так как это может произойти? (Похоже, в вашем рабочем процессе нет ISO-8859-1 [5] (Latin1)).

Я считаю, что я мог бы воспроизвести это на VFAT или NTFS-разделе, используя опцию mount iocharset=value . Если бы я установил его на ISO-8859-15 и имел языковой стандарт UTF-8, то, возможно, систему можно было бы обмануть, чтобы преобразовать имена файлов "в неправильном направлении".

Но здесь ваша установка Wheezy, скорее всего, ext3 , и я не знаю вариант NLS для ext3.

Другая возможность состоит в том, что файлы на самом деле правильно созданы, и вы просто видите их неправильно:

  • Putty настроен на использование UTF8?
  • настроен ли ваш FTP-сервер (и клиент) на UTF8?

Я заметил еще одну странной вещь: ваши два яблока файлов, один в 16:10 и один в 16:34, по всей видимости, будет отображаться ls с использованием два различных форматов дат. В одном случае указывается год.

Может быть, 7z создает немного необычную запись inode?

Тем не менее, здесь есть хитрость с использованием утилиты convmv которая может оказаться полезной.

1

Опция -scs предназначена только для @listfiles, который выглядит как файл, содержащий список имен файлов. Это не повлияет на кодировку имен ваших файлов.

Одним из возможных решений было бы запустить iconv с соответствующими параметрами для всех ваших файлов после их извлечения.

-1

После извлечения файла просто переименуйте его через mv или браузер файлов, это не повредит.

Для переименования массовых файлов, если вы вынуждены это сделать, вы можете использовать find (с -exec) или krename.

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