12.02.2011

rar&zip и имена распакованных файлов - итожим говоренное

Хочу в посте показать все возможные способы решения проблемы  с кодировкой имен файлов при распаковке, сжатых rar.
Типичный вид файла, распакованного стандартными средствами Ubuntu (file-roller) из контекстного меню Наутилуса командой "Распаковать сюда":
ཿ����� �.�., ����� �ᮡ� ����߻���ᡡ�� ���������. 衿�� 2.djvu (неверная кодировка)



1 способ. Использование консольной утилиты unrar (non-free)

unrar e имя_архива.rar 
или 
$ unrar x имя_архива.rar 


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


2 способ. Более юзер френдли, но пригоден для исправления кодировки в небольшом количестве файлов. Зато благодаря этому юзерфрендли этому способу можно обучить стороннего пользователя. Например, если в офис пришел прайс запакованный в rar и при этом файл назван кирилицей и его нужно распаковать на линукс-машине, то этот способ наиболее простой. 
Есть такой твикер Ailurus, в нем есть пункт главного меню "Установка программного обеспечения", слева в списке раздел "Расширение Наутилус", а там "Пункт исправить имя файла".

После установки этого акшена (и перезапуска Наутилуса) достаточно щелкнуть на имени файла с неправильной кодировкой
и выбрать правильное имя из контекстного меню


3 способ. Предыдущие способы имеют каждый свои недостатки. Но не нужно забывать, что и файлы извлеченные из большинства zip архивов тоже имеют неправильную кодировку. Вот тут придет на помощь универсальный способ, который работает с именами уже распакованных файлов, к сожалению консольный, который я подсмотрел здесь. Заходим в папку где лежат файлі с неправильной кодировкой и командуем:

$ convmv -f cp866 -t utf8 -r --notest *

Плюс этого способа, как и первого, - возможность пакетной обработки большого количества файлов.

4 способ. Подойдет для новичков и самых ленивых, но только для личного домашнего использования - просто установить WinRar. Он прекрасно работает под Wine. Однако это уже нарушение лицензионной чистоты, если только WinRar не был честно куплен. В комменариях подсказали, что можно пользоваться p7zip. Насколько я понял под линукс для него своего гуя нет, но его библиотека используется file-roller. 


5 способ. Удалить rar. Без него file-roller использует unrar у которого нет проблемы с кодировками.


P.S. спасибо за ценные комментарии!