Собираем
информацию
по крупицам
Статьи - Компьютерное

Linux: как перестать удивляться, и начать работать

Как распаковать RAR-архив в Linux с именами файлов в кодировке Windows
06-05-2012
08:53:03

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

 

При распаковке rar-архива часто возникает проблема. Если имена файлов содержат русские буквы, то распаковываемые файлы получат нечитаемые имена в сбитой кодировке. Давайте разбираться, как же распаковывать такие архивы.

 

В дистрибутивах Linux есть два вида rar-архиватора. Назовем их "старый" и "новый". Я, к сожалению, не могу точно сказать, начиная с какой версии можно считать rar "старым", а после какой - "новым". Различия в них в том, что опции, работающие в "старой" версии не работают в "новой".

 

 

"Старый" rar

 

Чтобы распоковать rar-архив с правильными именами файлов, нужно воспользоваться опцией -sc. Вот что про нее написано в помощи:

 

sc<chr>[obj] Specify the character set

 

Больше ничего. Как обозначаются кодировки, и какие кодировки поддерживаются, в помощи, в man и в документации написать забыли. Делюсь с вами сакральными знаниями:

  • u - Unicode (UTF-8)
  • a - ANSI Windows (CP1251)
  • o - OEM DOS (CP866)

 

Таким образом, чтобы распаковать rar-архив с файлами, имена которых имеют кодировку CP1251, нужно дать команду:

 

rar x -sca archive.rar

 

По всей видимости, данная опция работает в версии Rar вплоть до 2.8. В более поздних версиях эта опция присутсвует, но, по факту, при распаковке игнорируется.

 

 

"Новый" rar

 

Как было сказано ранее, в новых версия rar опция -sc не работает. Как же распаковывать проблемные архивы? Ответ: воспользоваться программой unrar версии примерно 3.9x. Эта программа каким-то волшебным образом автоопределяет кодировку имен файлов, и распаковывает с правильными именами.

 

Пример команды распаковки через unrar:

 

unrar x archive.rar

 

В дистрибутивах Linux программы rar и unrar располагаются в одноименных пакетах. Программы обычно имеют одну и ту же версию - например, в текущем Debian Stable и rar и unrar имеют номер версии 3.93. При этом rar не может правильно распаковать архив с русскоязычными файлами, а unrar может.

 

Какой же выход? Выход банален: пропагандировать пользоваться передовыми открытыми архиваторами типа 7z. В них кодировка имен файлов записывается в заголовочную информацию архива, и распаковка всегда происходит правильно.

 



К списку "Компьютерное"

Поделиться этой страницей


Статистика


RSS подписка

Подпишитесь на новости сайта по RSS


 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик