На Хабре опубликовали блок-схему для распознавания кракозябр с исходниками схемы в zip-архиве. По иронии судьбы в первом комментарии засветился скриншот:
Так выглядит кириллическое имя файла внутри zip'а, созданного в Windows и распакованного в линуксе.
Я сам неоднократно сталкивался с подобным проявлением нетерпимости в мире кодировок. Решил потратить пару минут на изучение вопроса в гугле.
На opennet'е хорошо разжевали суть проблемы:
Имена файлов в ZIP-архиве хранятся в кодировке DOS, соответствующей языку локали. В Windows эта кодировка может быть получена соответствующей функцией, а для прочих систем авторы Info-ZIP решили не возиться и схалтурили — сделали безальтернативное преобразование cp850 → cp1252.
Там же, в комментариях, указали ссылку на PPA с пропатченными пакетами zip
, unzip
и p7zip
. Без промедлений побежал избавляться от кракозябр в Ubuntu, подключив репозиторий:
sudo add-apt-repository ppa:frol/zip-i18n
sudo aptitude update && sudo aptitude safe-upgrade
Как вы, наверняка, догадываетесь, наступило безоговорочное счастье. Да здравствует интернационализация братских народов!
9 комментариев: ответить
у мя для сих целей(и не только) в zshrc имеется фунция
convmv-unzip() {
convmv -f iso8859-1 -t cp850 -r --notest --nosmart $1
convmv -f cp866 -t utf8 -r --notest --nosmart $1
}
Спасибо за ссылку на репозиторий с исправленными пакетами; не знал, что он существует. До сегодняшнего дня использовал для этого сценарии Nautilus'а (http://vkapas.livejournal.com/17988.html).
С мест сообщают, что в генте чинится USE-флагом natspec и emerge'ированием замаскированных пакетов zip и unzip, http://www.gentoo.ru/node/21574
@muhas
Недавно пересел на ZSH. Всех прелестей пока ещё не вкусил, но дополнение по табу это пестня. Уже ради этого стоило переходить :-)
@vkapas
> Спасибо за ссылку на репозиторий с исправленными пакетами; не знал, что он существует.
You are welcome! :-) Спасибо тому, кто собрал пакеты.
@Andrew Kravchuk
Спасибо за ссылку. Гентушники оценят.
@Anton Yakutovich
приведенная функция и в bash'е работает
но $1 лучше на $@ заменить дабы не по одному файлу переименовывать.
А вообще я очень рад что появился ещё один хороший человек использующий zsh
Вспомнилась шутка в тему. Кто-то мне прислал, не помню:
В: есть проблема с распаковкой архива, в котором имена файлов на иврите.
О: а контент кошерный?!
В: вот из-за этого кошерного контента и проблемы.
Всегда называл файлы православной латинницей и не имел проблем.
@virens
Михаил, все конечно хорошо, вот только как быть с архивами, которые присылают тебе, тут обычно начинается шаманство с wine, вот правда теперь решение есть.
Проблема с кодировкой бывают часто когда упаковывают файлы с русскими именами в zip стандартным упаковщиком Windows.
Как правило, все имена в таких архивах выглядят как ????????? и не распаковываются стандартными средствами.
Я обычно распаковываю такие файлы с помощью консольного unzip, задав кодировку имен файлов с помощью опции -O WIN-1251.
Кракозябры из RAR архивов - http://softhelp.org.ua/?p=2256
Кракозябры в ZIP-архивах - http://softhelp.org.ua/?p=2297