
В документации PKZipC упоминается -utf8
возможность сохранения имен файлов, отличных от ASCII, в кодировке UTF-8 внутри ZIP-архива, но не говорится, как добавлять такие файлы с помощью @list
аргумента pkzipc -add
.
Я попробовал несколько комбинаций запуска с -utf8
переключателем и без него, а также использования @list
файлов, сохраненных в кодировках UTF-8 или UTF-16 с BOM и без него, но все они не увенчались успехом.
Мне интересно, кому-нибудь повезло больше в реализации этого проекта.
решение1
Поскольку вы перепробовали все возможные комбинации переключателей -utf8
и @list
с кодировкой UTF-8 или UTF-16 и даже с/без BOM, я не вижу, что еще можно сделать с помощью PKZipC для Windows и его параметров.
Я бы посоветовал обратиться в службу поддержки PKWARE и подать жалобу, хотя это может и не принести немедленного решения.
В то же время вам нужно будет преобразовать имена файлов, содержащие не-ASCII символы, в имена без таких символов. Этот формат называется краткой формой имени файла, которая по сути является старым форматом DOS имени файла 8.3. Команда dir /x
отобразит эти имена.
Чтобы получить короткие имена для группы файлов, см. пост Как найти короткий путь к каталогу/файлу Windows? где перечислены различные решения. Мне особенно понравилосьэтот ответ который предложил следующую однострочную фразу:
cmd /c for %A in ("C:\Program Files") do @echo %~sA
Вот пример того, как вы можете это использовать:
Поскольку вы говорите, что ваш ИТ-отдел решил отключить короткие имена NTFS 8.3 на ваших сетевых ресурсах, я бы посоветовал поискать альтернативу. Вот некоторые из них, которые я бы предложил протестировать:
решение2
Используя командную строку, попробуйте следующее:
выполнить команду
chcp 65001
для измененияcmd
кодовой страницы наutf8
Затем выполните
pkzipc
команду с помощью-utf8
Надеюсь, это вам поможет.