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

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

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

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

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

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

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

34 комментария
Имярекъ 2014

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

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

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

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

MiRacLe (miracle.rpz.name) 2014

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

Дмитрий 2014

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

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

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

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

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

The Unarchiver

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

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

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

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

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

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

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

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

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

artemp.pip.verisignlabs.com 2014

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

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

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

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

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

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

* 2014

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

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

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

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

Dima 2017

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

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

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

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

Dima 2017

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

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

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

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

Dima 2017

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

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

Комментарий для 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 2017

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

Dima 2017

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

Dima 2017

Забавно*

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

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

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

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

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

Dima 2017

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

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

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

Dima 2017

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

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

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

Нет.

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

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

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

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

Dima 2017

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

Dima 2017

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

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

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

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

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

Дмитрий Дымов 2021

Всё пошло не по плану! Закинул скрипт в папку загрузок, запустил, а он почему-то начал переименовывать из корня — полез в документы... ну а дальше додумаете сами

Евгений Степанищев 2021

Плохо, так делать не надо было.

Дмитрий Дымов 2021

есть лекарство?

Евгений Степанищев 2021

Я не делал, в теории, думаю, можно что-то такое придумать.

Максим Донских 2021

Добрый день,

Аналогичная проблема, как у Дмитрия. Не придумали ли решение? Мало того, что вся моя система теперь сами понимаете как выглядит, так еще и сетевые папки туда же.

Евгений Степанищев 2021

Добрый!

Над решением я не думал (разве что запретить запускать без параметров). Но вообще надо бы, судя по всему надо этим подумать, просто у меня пока сил нет.

Максим Донских 2021

Добрый день!

Что же делать? :D

Давайте очень сильно очень срочно подумаем как исправить. :)

Не столь важно сейчас (для меня), чтобы этот скрипт у меня работал, как то, чтобы все файлы и папки (в том числе сетевые и системные) вернулись в первозданный вид. А то, чувствую, меня уволят :D

Напишите предостережение большими буквами в начале сообщения :)

Евгений Степанищев 2021

Для начало было бы неплохо увидеть 2—3 имени — как было и во что превратилось.

Максим Донских 2021

Donskikh.Maksim@gmail.com
Напишите мне на почту, обменяемся мессенджерами.