Распаковка в Unix ZIP-архива созданного в Windows

Задача: Осуществлять пакетную загрузку файлов на сайт в виде ZIP-архива. После закачки архив распаковать и обработать вложенные файлы. Имена файлов в архиве могут быть содержать русские буквы.

Проблема: При распаковке ZIP-архивов содержащих файлы с русскими именами в Unix-подобных системах получаются файлы с нечитабельными (и не пригодными для дальнейшего использования) именами. Причем это относится к архивам, созданным в ОС Windows.

скриншот нарушения кодировка

Рисунок 1 – Имена распакованных файлов: правильный и искаженный.

Одно из возможных решений данной проблемы: устанавливаем программу convmv. Находим для своей операционной системы пакет и устанавливаем его:

rpm -Uvh /home/user1/convmv-1.10-1.el5.noarch.rpm

Теперь команды распаковки архивов будут следующими:

unzip example.zip
convmv --notest -r -f cp-1252 -t cp-850 ./example &> /dev/null
convmv --notest -r -f cp-866 -t utf-8 ./example &> /dev/null

Данная инструкция проверялась на CentOS 5 в модуле Acidfree (осуществляется массовый импорт фотографий в альбом из ZIP-архива).

Ubuntu 9.04

За несколько дней до выхода релиза Ubuntu на официальном сайте сделал заказ на 3 диска. А сегодня я их успешно получил. Судя по наклейке на пакете, то прислали диски с острова Мэн (The Isle of Man), который является Коронным владением Великобритании, остров расположен в Ирландском море примерно на одинаковом расстоянии от Англии, Ирландии, Шотландии и Уэльса.

Ubuntu 9.04

А также в комплекте было 4 наклейки :)