vanessa-automation icon indicating copy to clipboard operation
vanessa-automation copied to clipboard

Сломанная кодировка кириллицы в именах файлов и каталогов в архиве релиза 1.2.041.15

Open lo0p3r opened this issue 10 months ago • 3 comments

  1. Версия Vanessa Automation 1.2.041.15
  2. Windows 7 x64 Pro
  3. 7-Zip 23.01 x64, 7-Zip 24.04 x64

В архиве релиза 1.2.041.15 vanessa-automation.1.2.041.15.zip имена огромного числа файлов (скорее всего тех, чьи имена содержат кириллицу) поломаны. В архиве предыдущего релиза 1.2.041.1 vanessa-automation-single.1.2.041.1.zip такой проблемы нет.

Имена файлов в релизаци vanessa-automation

lo0p3r avatar Apr 24 '24 08:04 lo0p3r

При использовании свежего WinRAR 7.00 проблема не воспроизводится... Имена файлов в релизаци vanessa-automation WinRAR

lo0p3r avatar Apr 24 '24 08:04 lo0p3r

Спросил о проблеме автора 7-Zip: https://sourceforge.net/p/sevenzip/bugs/2463, таки проблема и в архиве и в 7-zip. Что-то изменилось в процессе сборки архивов?

lo0p3r avatar Apr 24 '24 10:04 lo0p3r

@lo0p3r Не готов сказать, что изменилось, но учитывая, что такое я видел только при использовании 7zip - возможно проблема на стороне 7zip.

Pr-Mex avatar Apr 25 '24 06:04 Pr-Mex

Проблема в архиве. Windows explorer так же открывает и показывает что битые имена в файлах и папках. Не надо предлагать ставить winrar. Необходимо исправить архив image

omankit avatar May 20 '24 10:05 omankit

Пока нашел только такую команду для явного указания кодировки внутри архива 7z.exe a -tzip -mcu archname.zip file2pack.txt

Pr-Mex avatar May 22 '24 11:05 Pr-Mex

Я тут привожу в порядок код 7zip в Дебиане, и вот что хочу сказать. У вас в заголовке .zip'а система, на которой он создавался — Unix, а кодировка в архиве — CP866. Никто не ждёт в архиве, сделанном на Unix системе, кодировку 866. То, что некоторые виндовые архиваторы её там ожидают — скорее странность в них, чем ожидаемое поведение.

Если расскажете, как вы такой архив получаете, попробую подсказать, как сформировать его правильно.

Распаковать его можно так: unzip -I CP866 -l ./vanessa-automation.1.2.041.15.zip Если используется unzip с убунтовым патчем.

Или вот так: 7zz -mcp=866 x ./vanessa-automation.1.2.041.15.zip Если используется 7zip с моим патчем вот отсюда https://sourceforge.net/p/sevenzip/bugs/2473/?page=1#96ae Патчик этот уже в Дебиане

PS: Есть замечательная программа zipdetails, показывающая подробно, что у архива внутри. Очень рекомендую в отладочных целях.

unxed avatar May 27 '24 23:05 unxed

Причем на windows 11 русской версии открылся без проблем. Так и разрулил ситуацию. Но, конечно, это не решение проблемы для остальных старых версий ОС

omankit avatar May 28 '24 09:05 omankit

В идеале бы туда писать либо в utf-8, выставляя бит 11 в general purpose flag, либо в отдельное поле unicodename, тогда в обычный filename пусть себе будет 866, любой относительно современный софт возьмёт юникодную версию.

unxed avatar May 28 '24 09:05 unxed

А какой софт, всё-таки, такие архивы создаёт? Надо туда тикет заслать, что ли.

unxed avatar Jun 12 '24 13:06 unxed

А какой софт, всё-таки, такие архивы создаёт? Надо туда тикет заслать, что ли.

Сейчас под виндой такая команда tar.exe -a -c -f C:\Commons\rep\Distrib\vanessa-automation.zip vanessa-automation

Или второй вариант - создание zip архива с помощью winrar

Pr-Mex avatar Jun 16 '24 15:06 Pr-Mex

А какой софт, всё-таки, такие архивы создаёт? Надо туда тикет заслать, что ли.

Сейчас под виндой такая команда tar.exe -a -c -f C:\Commons\rep\Distrib\vanessa-automation.zip vanessa-automation

Или второй вариант - создание zip архива с помощью winrar

Кто же еще в нашей жизни пользуется winrar? Это что то из Windows 98 как и nortondisk doctor

omankit avatar Jun 16 '24 17:06 omankit

В общем я тут провёл некоторое расследование и выяснилось вот что. tar.exe, который идёт в комплекте с Git for Windows, это bsdtar, использующий libarchive. А libarchive при создании архивов всегда в поле "операционная система, на которой создан архив" ставит значение UNIX, даже если библиотека под винду собрана и на ней работает. Соответственно у нас и получается архив, в котором кодировка 866 (стандартная для консоли Windows), а при этом значение операционки UNIX, и следовательно многие архиваторы там кодировку 866 никак не ждут.

Сделал PR в libarchive с исправлением этого косяка: https://github.com/libarchive/libarchive/pull/2240

unxed avatar Jun 16 '24 19:06 unxed

@unxed @omankit @lo0p3r

Выложил новый релиз, собрал zip по новому. Просьба проверить. https://github.com/Pr-Mex/vanessa-automation/releases/tag/1.2.041.22

Pr-Mex avatar Jun 24 '24 18:06 Pr-Mex

unzip, 7zz, far2l на последнем Mint распаковывают нормально, ура!

unzip ругается, правда, но это ни на что не влияет. unzip с моим патчем (ждите в следующем Ubuntu) уже даже и не ругается :)

unxed avatar Jun 24 '24 20:06 unxed