Windows - Кириллица в именах файлов внутри архива ZIP
В статье рассказывается о том, как упаковывать файлы в ZIP-архив с кодировкой имён в UTF-8.
Описание проблемы
Иногда при открытии архивов ZIP
в именах файлов написаны иероглифы. В основном, это случается при работе с архивами, упакованными в среде Windows, в других операционных системах, например Linux и Mac OS.
Вот как это выглядит:

Почему так
Такое получается из-за разных кодировок в разных операционных системах. А точнее из-за того, что Windows до сих пор использует свою WIN1251
, когда давно уже существует UTF-8
, созданная специально во избежание подобных проблем. ZIP, хоть и являясь старейшим и распространённейшим форматом архивов, испытывает проблемы с этим при переносе архива с платформы на платформу.
Не имеет значения, какую программу-архиватор вы используете - причина именно в самом формате ZIP
. Для проверки мы упаковали тестовый архив с настройками по умолчанию сначала архиватором WinRAR, затем - архиватором 7-Zip. После чего просмотрели архивы в среде Mac OS - в обоих архивах кириллические имена файлов превратились в набор кракозябр.
Ну так может тогда не стоит использовать формат ZIP
и паковать всё, например, в 7z
? В общем-то, это хорошая идея, но дело в том (и это единственная причина), что ZIP
, как уже говорилось, является наиболее распространённым форматом архивов, потому чтобы большинство ваших пользователей смогло распаковать ваш архив, использовать рекомендуется именно его.
Что делать
Нужно как-то принудительно указать архиватору, что при кодировке имён файлов он должен использовать UTF-8.
И у архиватора 7-Zip
есть такая возможность. Формат команды следующий:
7z.exe a -tzip -mcu archname.zip file2pack.txt
Здесь:
7z.exe
- имя исполняемого файла архиватора;a
- команда архивации;-tzip
- формат архива: ZIP;-mcu
- именно эти ключи указывают на кодировку UTF-8;archname.zip
- имя итогового файла архива;file2pack.txt
- файлы для упаковки.
После создание архива такой командой кириллица в именах файлов сохраняется на всех платформах, использующих UTF-8 (то есть, практически везде):

Очередная медаль на грудь славного архиватора 7-Zip
.
Как это автоматизировать
Понятное дело, что каждый раз лезть в командную строку и писать там команду архивации с необходимыми ключами очень сильно обламывает, ведь хочется, чтобы всё выполнялось в два клика мышью.
Как вариант, можно написать свою оболочку для 7z.exe
или просто создать .bat
-файл.
А можно воспользоваться приложением Open++
и добавить нужный пункт в контекстное меню Windows.