+++ Данная ошибка создана размножением ошибки 14125 +++ При открытии архивов Zip, пришедших от пользователей Windows, нет проблем, однако при создании архива Zip с именами файлов с кириллицей в Windows они показываются с битой кодировкой. (В ответ на комментарий №12) > Проверенный патч приложен, сборку zip-2.32-alt2.src.rpm в Сизиф отправлю. > Более красивый патч возможен в будущем. > Созданный с помощью ark архив проверен на открытие в > - Windows XP (встроенное средство) > - WinRAR (Windows) > - FAR (Windows) > - 7-zip (Windows) > - unzip (ALT Linux) > - ark (ALT Linux) > - file-roller (ALT Linux) Спасибо! (В ответ на комментарий №17) > > Виталик, как думаешь -- возможно ли подновить патч к нынешнему zip до p9? > > p8/p7 у нас так с этой бедой и прожили (см. тж. #26954). > Думаю, возможно. Попробую повторить к десятилетию патча. Видимо, стоит оформить отдельной багой -- та-то была заслуженно закрыта.
В штатной установке проблема ушла сама, но остаётся один воспроизводимый случай. zip 3.0-alt5 (задание https://packages.altlinux.org/tasks/396095/), natspec-патч отключён (в spec %%patch3 закомментирован). Контейнер Sisyphus, zip -r архива с файлом "привет.txt" при LANG=C, C.UTF-8 и ru_RU.UTF-8 — во всех трёх случаях заголовок начинается с 50 4b 03 04 0a 00 00 08 то есть general purpose flags = 0x0800, бит 11 (UTF-8) выставлен; python3 -c "import zipfile" подтверждает: flag_bits=0x0800, bit11=True, name=привет.txt; zipinfo показывает имя как Unicode. Механизм: zip.c:2214-2222 пробует setlocale(LC_CTYPE, "en_US.UTF-8") и при успехе ставит using_utf8=1, а zipfile.c:5402-5404 — сам бит. Случай, где бит не ставится: система без glibc-locales. После rpm -e --nodeps glibc-locales (доступна только встроенная C.UTF-8) тот же архив получает flag_bits=0x0000, bit11=False и битое имя — даже при LANG=C.UTF-8, потому что проверяется именно наличие локали en_US.UTF-8, а не кодировка текущей локали. Отсюда два варианта починки: Requires: glibc-locales либо патч в zip.c — пробовать "C.UTF-8" вторым кандидатом или смотреть nl_langinfo(CODESET). Оставляю открытым на ваше решение.
(Ответ для Anton Farygin на комментарий #1) > Отсюда два варианта починки: Requires: glibc-locales либо патч в zip.c — > пробовать "C.UTF-8" вторым кандидатом или смотреть nl_langinfo(CODESET). > Оставляю открытым на ваше решение. Сделал второй вариант, просьба проверить из задания #432513
zip-30000000:3.0-alt6 -> sisyphus: Thu Sep 10 2026 Andrew A. Vasilyev <andy@altlinux> 30000000:3.0-alt6 - Try C.UTF-8 locale if setting of en_US.UTF-8 fails (Closes: #34751).