Русские имена на «Маке» после разархивации ZIP

Я вчера скачал несколько десятков зип-архивов, внутри которых тысячи файлов с русскими именами. Скачивал через браузер «Сафари» и этот поганец, как у него водится, услужливо мне их распаковал после скачивания. У меня время от времени вылетает из головы эта особенность, в общем, я получил кучу папок и файлов, которые выглядят вот так:

Кракозябры (17.71КиБ)

Эта давнишняя проблема «Мака», проистекающая из родовой травмы зип-архивов — этот архиватор родился ещё во времена ДОСа и для совместимости сохраняет русские имена ещё в той, ДОСовской кодировке. Правда, лет 15 назад я ковырял формат и увидел, что в каких-то метаданных лежит оригинальное имя, но должно быть «Мак» про это поле ничего не знает.

Как бы там ни было, в конце индикатора прогресса я увидел кучу файлов с нечитаемыми именами. Ничего готового я быстро не нашёл, поэтому сварганил небольшой скрипт на «баше», который восстанавливает русские имена разархивированного зип-архива.

Способ употребления такой: складываете всё испорченное в какую-либо папку и запускаете внутри fixzip. В процессе «ремонта» он будет показывать на экране восстановленные имена. Два раза запускать нельзя — имена снова будут испорчены.

Поделиться
Отправить
29 комментариев
Имярекъ

Насяльника, заголовканама!

Евгений Степанищев (bolknote.ru)

Комментарий для Имярекъ:

Спасибанама! :)

MiRacLe (miracle.rpz.name)

convmv на маках не собирается?

Дмитрий

Раз уж пошла такая пьянка с кодировками: вчера в очередной раз столкнулся с проблемой коверкания тегов при переключении интерфейса макоси с русского на английский. Евгений, есть ли рецепт для автоматизации исправления этого случая? Править многие теги вручную, а еще и с шазамом — малоприятное времяпрепровождение.

Арсений Габдуллин

Евгений, с распаковкой ЗИП-архивов, содержащих файлы с кириллическими (и любыми другими нелатинскими) именами неплохо справляется The Unarchiver:  https://itunes.apple.com/en/app/the-unarchiver/id425424353?mt=12

Евгений Степанищев (bolknote.ru)

Комментарий для Арсений Габдуллин:

The Unarchiver

Он у меня есть, проблема в том, что «Сафари» сделал это автоматически, системным средствами. И я получил уже распакованные архивы с битой кодировкой.

Евгений Степанищев (bolknote.ru)

Комментарий для miracle.rpz.name:

convmv на маках не собирается?

В «брю» есть, но тут речь о средствах, встроенных в систему.

Евгений Степанищев (bolknote.ru)

Комментарий для Дмитрий:

Раз уж пошла такая пьянка с кодировками: вчера в очередной раз столкнулся с проблемой коверкания тегов при переключении интерфейса макоси с русского на английский.

Каких тегов, о чём речь?

artemp.pip.verisignlabs.com

Комментарий для Евгения Степанищева:

и этот поганец, как у него водится, услужливо мне их распаковал

Настройки -> Основные -> Открывать «безопасные» файлы после загрузки

Евгений Степанищев (bolknote.ru)

Комментарий для artemp.pip.verisignlabs.com:

Ага, спасибо! Просто в других случаях это очень удобно.

*

Нужно не в блоге сетовать, а баг репорт отправлять.

Евгений Степанищев (bolknote.ru)

Комментарий для *:

Я и не сетовал, я решение написал и вы зря противопоставляете два этих действия. Кстати, «отчёт об ошибке» пишется английскими словами в русском языке вот так: «баг-репорт».

Dima

Если вы еще тут, непонятно, как использовать скрипт. Не могли бы объяснить? Fixzip ничего не делает с файлами вообще.

Евгений Степанищев (bolknote.ru)

Комментарий для Dima:

Я ещё тут. В последнем абзаце написано что нужно сделать. А что именно вы делаете? Напишите по шагам.

Dima

Довольно много испорченых файлов. Я кладу их в папку, запускаю fixzip — появляется страница с большим количеств кракозябр и больше ничего не происходит. Я чайник. Или кофейник, по всей видимости.

Евгений Степанищев (bolknote.ru)

Комментарий для Dima:

Как вы запускаете fixzip?

Dima

Просто запускаю программу, потом открываю файлы через кнопку добавить. Думаю, неверно, но иначе не знаю как.

Евгений Степанищев (bolknote.ru)

Комментарий для Dima:

Это утилита командной строки ( https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8 ), просто она не запускается.

Dima

То есть, сложил в папку, запустил программу, нажал «добавить» эту папку — открывается страница с закорючками. Папку, причем, добавлять не хочет, приходится все файлы выделять. Попытался загрузить один файл — вообще никакой реакции.

Dima

Забвано. Просто есть программа fixzip. А скрипт как использовать после этого? Простите, что столько вопросов, я не программист, только начинаю сейчас заново. Мы фортран с паскалем учили, совсем другое, так сказать. С у меня только базовые знания, а с операционными системами и прочими заморочками вообще не знаком

Dima

Забавно*

Евгений Степанищев (bolknote.ru)

Комментарий для Dima:

fixzip — и есть скрипт. Или что вы имеете ввиду?

То есть, сложил в папку, запустил программу, нажал «добавить» эту папку — открывается страница с закорючками.

Вот это я вообще не понимаю. Давайте ещё раз раз. Как именно вы запускаете программу?

Dima

Вот это http://www.essentialdatatools.com/products/objectfixzip/

Если это не то, тогда не понимаю, то что вы говорите, вообще. Что тогда значит, «Способ употребления такой: складываете всё испорченное в какую-либо папку и запускаете внутри fixzip. В процессе „ремонта“ он будет показывать на экране восстановленные имена. Два раза запускать нельзя — имена снова будут испорчены.»?

У меня гора файлов, а zip уже удален. Они были на маке и поиск по тексту раньше работал, в новой операционке не работает. Я теперь нужные вообще не могу найти без имен файлов. Очень было бы хорошо, если есть способ, только как я сказал, я недостаточно знаю, чтобы понят то, что возможно для вас простые вещи. Если бы вы могли объяснить, что именно нужно сделать, было бы здорово.

Dima

То есть, мне сохранить этот текстовый файл с названием fixzip.sh и потом запустить с именем папки в типа аргументе?

Евгений Степанищев (bolknote.ru)

Комментарий для Dima:

Нет.

Но если вы не знаете как это делается, я объяснять не готов. :)

Евгений Степанищев (bolknote.ru)

Комментарий для Dima:

Я не знаю что такое http://www.essentialdatatools.com/products/objectfixzip/​, никакого отношения не имею к этой программе.

Dima

А вы попробуйте. Что за язык, можно это сделать в Visual Studio?

Dima

Ok, bash это язык. У меня есть мак, но в чем сделать shell? или вообще нет желания это мне пытаться объяснить?

Евгений Степанищев (bolknote.ru)

Комментарий для Dima:

Дело не в отсутствии желания, а в том, что рассказывать всё это очень долго. Баш — язык, баш — один из шеллов (shell), по ссылке в моей заметке — программа на баше. Её надо положить к файлам, которые надо исправить и там запустить через консоль.

Попробуйте по этому описанию разобраться, может получится.

Популярное