вторник, 17 июля 2012 г.

Unzip i18n: избавляемся от кракозябр в архивах


На Хабре опубликовали блок-схему для распознавания кракозябр с исходниками схемы в 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


Как вы, наверняка, догадываетесь, наступило безоговорочное счастье. Да здравствует интернационализация братских народов!

Источник: http://drakulavich.blogspot.com/2012/07/unzip-i18n.html

1 комментарий:

  1. Анонимный18 июля 2012 г., 13:59

    Altlinux кажется применяли костыль с кодировками ( mp3 тэги), они патчили либы отвечающие за чтение mp3. Вместо того, чтобы использовать проигрыватель прозрачно работающий с cp1251. Иногда за zip архивы с русскими файлами хочется поубивать.

    ОтветитьУдалить