Как создать ZIP файлы с определенной кодировкой - PullRequest
2 голосов
/ 02 октября 2009

На моем сервере Linux у меня есть несколько файлов с акцентированными именами (test-éàïù.zip). Когда я добавляю их в новый ZIP-файл с помощью инструмента командной строки 7zip, информация о кодировке / кодировке не сохраняется, и при открытии на компьютере Windows в архиве неправильно отображаются имена файлов. Я знаю, что 7zip создает архивы Zip V1.0, а не 2.0. Может быть, набор символов ограничен набором символов MSDos? Как я могу указать кодировку с помощью 7zip или другого zip-инструмента, чтобы получить переносимые архивы?

Спасибо:)

1 Ответ

9 голосов
/ 04 октября 2009

Этот является вопросом суперпользователя, НО ...

ZIP использует кодовую страницу по умолчанию IBM437. Существует возможность использовать UTF-8, но не все инструменты и библиотеки zip поддерживают это. Некоторые zip-инструменты могут создавать произвольные кодовые страницы, даже если спецификация zip допускает только IBM437 или UTF-8. Я думаю, что WinRar является одним из таких инструментов.

DotNetZip выполняет кодирование. Это будет делать UTF-8 или произвольную кодовую страницу. если вы пишете приложение, есть библиотека .NET. Если вы работаете из скрипта, есть инструменты командной строки. В любом случае, DotNetZip требует .NET. Вам понадобится Mono для запуска в Linux.

пример для командной строки:

zipit.exe Olivier.zip -cp 860 test-éàïù.txt 

(для использования кодовой страницы 860) Я не уверен, что Windows Explorer правильно обрабатывает zip-файлы с альтернативной кодировкой для имен файлов внутри zip-файлов.

См. Как архивировать указанные папки с помощью командной строки для получения дополнительной информации об этом инструменте zipit.exe.

...