Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


apple-mac-os:macos-high-sierra:incorrect-encoding-in-archives-in-macos-and-sending-the-created-archive-by-mail

Решение проблемы кодировок в архивах в macOS и отправка созданного архива почтой

В macOS есть старая проблема кодировок в zip-архивах. Если создать архив штатным архиватором, а после открыть его штатным архиватором Windows или старой версией 7-zip, которая ещё не использовала кодировку UTF-8 по умолчанию, то можно увидеть нечитаемые имена вложенных в архив файлов и каталогов:

Сторонние бесплатные архиваторы, например Keka, также имеют эту проблему, хотя разработчик и обещает это решить. Коммерческие решения не проверялись.

Когда я начал заниматься решением этой проблемы, задумался о том, что неплохо было бы иметь возможность создать архив и сразу добавить его в качестве вложения в почтовом сообщении.

Установим бесплатную библиотеку p7zip:

brew install p7zip

Откроем Automator.app и создадим документ типа Служба

Настроим параметры: Служба получает файлы и папки в Finder.app

Добавим 1 шаг (этот шаг – основной, так как с его помощью создаётся архив):

Запустить shell-скрипт (тип bash), передать входные данные как аргументы.

Вставим скрипт:

#!/bin/bash
#Блок переменных
TEMPPATH=~/tmp/arch4mail
ARCPATH=$(dirname "${1}")
ARCNAME=$(basename "${ARCPATH}")
#Расположение архива
echo "$TEMPPATH"/"$ARCNAME".zip
#Создать архив
for FILES in "$@"
do
	/usr/local/bin/7z -tzip a "$TEMPPATH"/"$ARCNAME".zip "$FILES"
done

Добавим 2 шаг:

Запустить shell-скрипт; тип bash; передать входные данные как аргументы.

#!/bin/bash
echo "$1"

Вторым шагом получаем расположение архива. Это понадобится в дальнейшем для его удаления.

Добавим 3 шаг: Установить значение переменной. Создадим переменную, например Archive.

Добавим 4 шаг: Получить указанные объекты Finder

Добавим 5 шаг: Новое сообщение почты. Если необходимо, в поле сообщения можно ввести текст, а также выбрать учётную запись, от имени которой будет выполняться отправка письма.

Если Вы используете сторонние решения клиента электронной почты, то необходимо добавить шаг «Открыть объекты Finder» и из ниспадающего списка выбрать свой почтовый клиент.

Добавим 6 шаг: Получить значение переменной. Выберем ранее созданную переменную Archive.

Добавим 7 шаг: Переместить объект Finder в корзину

Сохраняем службу под именем Создать архив и отправить

Проверяем работу службы.

В каталоге «Тест архива» располагаются файлы и каталог:

Выделяем всё и с контекстного меню из раздела «службы» выбираем Создать архив и отправить. Появляется окно почтового клиента:

Отправим и посмотрим то, как откроется архив штатным архиватором:

Обратная ситуация аналогична, если пользователь Windows создаст архив штатной сжатой папкой или будет использовать старую версию 7-zip, то пользователь macOS увидит такое:

Для решения этого вопроса проще использовать готовое бесплатное решение доступное в AppStore – The Unarchiver.

Стоит заметить, что подобный архив не откроется на iOS* в программе Файлы**.


Проверено на следующих конфигурациях:

Версия ОС
Apple macOS High Sierra (10.13.4)

Автор первичной редакции:
Виталий Якоб
Время публикации: 20.05.2018 18:09

Обсуждение

Ваш комментарий:
 

apple-mac-os/macos-high-sierra/incorrect-encoding-in-archives-in-macos-and-sending-the-created-archive-by-mail.txt · Последние изменения: 20.05.2018 18:34 — Алексей Максимов