Обмен с внешним миром для пользователей Linux невозможен без архиваторов.
Проблемы совместимости должны быть сведены к минимуму.
Но как правило, в Windows для кодирования названий файлов в архивах используется OEM-кодировка (DOS),
в то время как в Linux названия записываются в кодировке файловой системы.
Нужно провести тестирование имеющихся в системе архиваторов.
1. Обеспечить переносимость архивов, содержащих файлы с кириллическими
именами, между OC DOS/Windows и Linux.
2. Обеспечить переносимость архивов, созданных в Linux с различными
кодировками локали.
Что касается переносимости, то фактически на данный момент большинство
архиваторов для Windows, и в том числе встроенный в Windows XP, рассматривают
все архивы, вне зависимости от ОС, где они были созданы, как хранящие имена
файлов в кодировке OEM. Исключениями являются Info-Zip Wiz и 7-zip, которые
оставляют имена файлов в Linux-архивах без перекодировки (таким образом
корректно отображаются кириллические Linux-архивы, созданные, например, в локали
ru_RU.CP1251).
Получается, что для решения пункта No.1 надо создавать Linux-архивы в CP850/866,
что в принципе не запрещено, как если бы у пользователя была установлена
соответствующая кодировка локали. А что касается пункта No.2, то unzip'у
остаётся только прикрутить автоугадывание кириллических кодировок для
Linux-архивов, иных вариантов я не пока вижу.
(Dmitry Vukolov <dav@altlinux.org>)
Формат ZIP официально поддерживает лишь имена файлов в кодировке ISO8859–1 и
информацию о кодировке не предусматривает. На практике линуксовые ZIP архивы
создаются в кодировке файловой системы, а DOS/Windows архивы — в кодировке OEM
CP850/866/...
При распаковке архива, созданного в DOS/Win, названия файлов перекодируются из
cp866 (кодировка хранения имён при архивации в указанных системах) в
левую кодировку. Исправлено: см. bug # 4871
Поскольку в файлах ZIP хранится информация о том, в каких системах они
созданы, предлагается перекодировать названия в кодировку файловой системы.