| 
|  | |  | | 3.7, Natrio (?), 08:36, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Многие уже пробовали "закинуть" подобные патчи в мэйнстрим Info-ZIP, но их либо отклоняли, либо удаляли в следующей версии. Разработчики Info-ZIP занимаются новой версией формата, рассматривая его как предпочтительный. Авторам же патчей ZIP требуется лишь для совместимости, а для всего остального у них есть другие архиваторы. Взаимопонимания в такой ситуации достичь сложно. Тем более с моим английским ;)
 
 |  |  | 
 | 
 | 2.9, john (??), 11:17, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  | При распаковке имена на русском zipinfo - дает абракадабру или набор '?????'
 
 |  |  | 
 |  | | 3.10, Natrio (?), 11:27, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Оригинальные unzip и zipinfo, будучи собранными с опциями по умолчанию, при выводе в консоль заменяю вопросительными знаками всё, что выходит на пределы ASCII. Есть опция NO_SETLOCALE, которая снимает блокировку, и в моём патче эта опция включена. Оригинальный zip при упаковке файлов выводит их имена в консоль в кодировке архива, то есть неправильно. В моём патче это исправлено, и имена выводятся в консоль без изменений.
 
 |  |  | 
 |  | | 4.12, john (??), 13:08, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  | > Оригинальные unzip и zipinfo, будучи собранными с опциями по умолчанию, при выводе > в консоль заменяю вопросительными знаками всё, что выходит на пределы ASCII.
 > Есть опция NO_SETLOCALE, которая снимает блокировку, и в моём патче эта
 > опция включена.
 > Оригинальный zip при упаковке файлов выводит их имена в консоль в кодировке
 > архива, то есть неправильно. В моём патче это исправлено, и имена
 > выводятся в консоль без изменений.
 Да, это работает - большое спасибо!
 |  |  | 
 | 
 | 
 | 2.33, sanek (??), 15:04, 12/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |   Zip & русские имена, поможем решить этот баг? Нужна ваша помощь!
 
 Ребята, многие из вас любят голосовать и так далее, я предлагаю вам сделать полезную для всего сообщества вещь. Необходимо будет потратить всего лишь пару минут на регистрацию и зарегистрироваться на оф. ресурсе
 https://launchpad.net/
 И проголосовать вот за решение этого бага:
 Проголосовать можно здесь:
https://bugs.launchpad.net/ubuntu/+source/unzip/+bug/580961
 Учитывая что там в баге в комментах идёт мощный срач, просьба НИЧЕГО там не писать, просто нажать ссылку
Does this bug affect you? И выбрать в выпадающем меню
 Yes, it affects me
 Я уже проголосовал. Ссылка на форум откуда взято- http://forum.ubuntu.ru/index.php?topic=124286.0
 
 |  |  | 
 | 
 
 | 1.2, Аноним (-), 23:35, 30/11/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | Можно просто распаковать в корень уже собранные пакеты unzip от альта с того же сизифа. 
 |  |  | 
 
|  | | 2.6, Natrio (?), 08:28, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Я очень благодарен авторам патчей из AltLinux, и я дал ссылки на оригинал. Однако мне пришлось добавить кое-что от себя, чтобы zip и unzip не только правильно обрабатывали файлы, но и правильно выводили имена в консоли. В тексте даны уже мои патчи, сделанные на основе оригинальных.
 
 |  |  | 
 | 
 
 
|  | | 2.4, iZEN (ok), 02:24, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Ношу ZIP-архивы с русскими именами файлов, сделанные под Windows, на работу. Там распаковываю, пакую в 7-Zip и приношу домой. :) 
 |  |  | 
 | 2.8, Natrio (?), 08:49, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Я могу отказаться от ZIP, но не могу заставить отказаться от него тех, кто приносит/присылает/выкладывает такие архивы, а также тех, у кого никакие другие просто не откроются. ZIP нужен именно для этого. 
 |  |  | 
 | 2.22, vovans (ok), 21:51, 02/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  конечно, можно ля-лякать, если с реальными людьми не общаешься... Но задолбёшься каждому объяснять... Не стоит на пустом месте раздражаться и раздражать других. Если есть возможность в течении нескольких минут исправить ситуацию раз и надолго, то нечего мозги компостировать себе и людям. 
 |  |  | 
 | 
 
 | 1.13, Andrey Mitrofanov (?), 14:08, 01/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | >| iconv -f cp1252 -t cp850 | iconv -f cp866 Вариант:
|recode lat1..850,866..
 , может быть,
 |recode -f lat1..850,866..
 , если будет на чём спотыкаться.
 unzip -l $file |recode -f 8859-1..850,866..
-работает, теперь ждём Совета, какой recode нужен для
 7z l $file | ....
  :)
 |  |  | 
 
|  | | 2.14, Natrio (?), 14:45, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Нет, у 7z со своими и раровскими архивами всё нормально. А вот зип он распаковывает своеобразно – имена в кодировке cp866, но с лишним левым байтом перед каждым символом. Но это всё костыли. Я перед тем, как занялся патчами, сам соорудил два работающих скрипта – один для переименования после распаковки, другой с распаковкой через трубу и сохранение в файле с перекодированным именем. Первый вариант требует заранее подготовить пустой каталог (а в норме unzip распаковывает файлы в любой), второй вариант сопровождается потерей всех даты и времени всех файлов, что тоже не всегда хорошо. И оба совершенно негибкие.
 |  |  | 
 | 2.15, Natrio (?), 15:48, 01/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  По уточнённым данным, 7z (p7zip) под Linux начинает распаковывать zip–архивы в неискаженной кодировке cp866, если указать ему ключ -no-utf16 или установить переменную LC_CTYPE в любое значение, отличное от пустой строки. 
 |  |  | 
 |  | |  | | 4.38, sergey (??), 13:45, 16/12/2010 [^] [^^] [^^^] [ответить] | +1 +/– |  |  7z l -no-utf16 <fname>.zip | iconv -f cp866 толькочо проверил
 
 |  |  | 
 | 
 | 
 | 
 
 
 | 1.18, мше (?), 08:53, 02/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | > более "продвинутые" форматы архивов (RAR, 7zip) тоже как-то решают эту проблему;
нифига они не решают. вон у меня щас лежит rar, который даже не распаковывается
 
 |  |  | 
 
|  | | 2.19, Natrio (?), 09:18, 02/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Чем именно не распаковывается? Последнее время появилась новая модификация архивов .rar, и для их распаковки нужна новая версия unrar. Если вы пользуетесь p7zip, то в него она включена, кажется, с 9й версии. Не спрашивайте меня, зачем разработчики winrar это сделали – вопрос к ним :)
  Но к кодировкам всё это отношения не имеет. Не буду говорить за всех, но с 9й версией p7zip у меня не возникает проблем с распаковкой созданных в Windows .rar и .7z архивов, а созданные им под Linux архивы .7z нормально открываются 7zip под Windows.
 |  |  | 
 | 
 
 | 1.20, fank (?), 13:10, 02/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | о, сколько лисапетов сразу rusxmms.sf.net
 удивитесь, как грамотные люди давным давно решили все эти проблемы
 |  |  | 
 
|  | |  | | 3.24, fank (?), 18:48, 03/12/2010 [^] [^^] [^^^] [ответить] | +/– |  | > ЗдОрово! А патчи для unzip-6.0 и zip-3.0 уже есть? сарказм? (С) Sheldon Cooper
 видимо, перцу, что это написал, надоело упрашивать дубоватых иностранцев и каждому объяснять, что за зоопарк местные девелоперы изобрели - патчи там скорее всего устарели, но все они описаны и не думаю, что сильно сложно допинать их для новых версий
 заявляется, что патчится все в несколько строк кода
 |  |  | 
 | 
 | 
 
 
 | 1.27, ананим (?), 23:54, 08/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | предпочитаю использовать fuse-zip - man fuse-zip fuse-zip - a FUSE filesystem for zip archives with write support
 ....
 If you want to specify character set conversion for file names in archive, use the following fusermount options:
 -omodules=iconv,from_code=$charset1,to_code=$charset2
 ....
 DESCRIPTION
 fuse-zip  is  a  fuse  filesystem,  that enables any program to work with a ZIP archive as though it is a plain directory.  Unlike KIO or Gnome VFS, it can be used in any application without modifications.
 Unlike other FUSE filesystems, only fuse-zip provides write support to ZIP archives.  Also, fuse-zip is faster that all known implementations on large archives with many files.
 
 |  |  | 
 
 | 1.28, autopilot (?), 11:47, 10/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | Debian 4 Etch + unzip-5.52-9etch1 на хостинге при распаковке кодировка битая, однако это фиксится в php, кроме одной вредной буквы 'Ш'-большая, которая, как выяснилось, просто проглатывается в процессе распаковки.
 В листинге же эта буква остается.
 Случайно выяснилось, когда залили архив с файликом городка "Шахунья.jpg".
 Рекомендую для проверки патчей и локалей обратить на это внимание.
 |  |  | 
 
 
|  | | 2.31, Natrio (?), 09:52, 11/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Чуть выше я уже писал, что unzip/zipinfo, собранный без опции NO_SETLOCALE, при выводе в консоль заменяет все не-ASCII символы вопросительными знаками. Мой патч к unzip http://pda.opennet.ru/soft/zip_rus/unzip60-natspec-mod.diff.gz
 как раз и отличается от альтовского патча включением этой опции. Другой способ её включить – задать для сборки unzip переменную окружения
 LOCAL_UNZIP="-DNO_SETLOCALE"
 Опции -I и -O нужны ТОЛЬКО для случаев, когда вам требуется задать кодировки отличные от тех, что выдаёт natspec. Если кодировка архива совпадает с определённой natspec DOS-кодировкой, то никаких дополнительных ключей не требуется:
 $ unzip -l ../test.zip
 Archive:  ../test.zip
 Length      Date    Time    Name
 ---------  ---------- -----   ----
 0  12-03-2010 21:23   тест/
 7  12-03-2010 21:23   тест/эюя
 7  12-03-2010 21:23   тест/абв
 17  12-10-2010 11:49   Шах и мат.txt
 ---------                     -------
 31                     4 files
 
 |  |  | 
 | 
 
 | 1.32, Forth (??), 14:55, 12/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |  Использую ваш патч, в unzip появились опции -I и -O и все равно вопросики в консоли. :( Система - Fedora 14. Где копать?
 
 |  |  | 
 
|  | | 2.34, Natrio (?), 09:14, 13/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Нет у меня федоры, проверить не могу. Могу подсказать следующее: 1) Мой патч
http://www.opennet.dev/soft/zip_rus/unzip60-natspec-mod.diff.gz
 должен накладываться на оригинальный unzip-6.0 :
 ftp://ftp.info-zip.org/pub/infozip/src/unzip60.tgz
 2) В моём патче включена опция NO_SETLOCALE. Если это так, она должна присутствовать в выводе команды сборки. То есть, после
make -f unix/Makefile generic_gcc
 в выводе должно часто присутствовать -DNO_SETLOCALE
 Если нет – значит сборка идёт как-то неправильно, или наложенный патч – не мой.
 3) После сборки с моим патчем unzip устанавливается в /usr/bin/
Возможно, у вас уже установлена другая версия в /usr/local/bin/ , которая обычно имеет более высокий приоритет в переменной $PATH. Если это так, то одна из версий явно лишняя.
 
 |  |  | 
 | 2.35, Natrio (?), 09:17, 13/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  4) Вопросики только в консоли? Имена распакованных файлов правильные? 
 |  |  | 
 | 
 
 | 1.36, Yo (??), 13:56, 13/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | # можно и так: zipinfo -1 my.zip | while read z
 do u=$(echo "$z"|iconv -f cp866)
 unzip my.zip "$z" && mv -i "$z" "$u"
 done
 
 |  |  | 
 
|  | | 2.37, Natrio (?), 08:43, 14/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Не получится. 1) Непатченный unzip/zipinfo выводит имена с перекодировкой cp850 => cp1252. Поэтому в вашем примере надо сначала обратить её, а потом уже переводить из cp866 :
 iconv -f cp1252 -t cp850 | iconv -f cp866
 подробности в статье выше.
 2) Во многих дистрибутивах unzip/zipinfo собран БЕЗ опции NO_SETLOCALE, и потому будет выводить в консоль все имена в виде "?????". Перекодировка после этого, естественно, уже невозможна.
 |  |  | 
 | 
 
 | 1.39, pva0xd (ok), 17:38, 23/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |  Natrio, а не могли бы вы пояснить в каких случаях нужена опция -K? И вообще зачем изменёно умолчание для dosify? 
 |  |  | 
 
|  | | 2.41, Natrio (?), 12:55, 24/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Опция -K обратна опции -k, то есть отключает "dosify". Умолчание изменено для совместимости с win-програмами. В частности, TotalCоmmander не видит русских имён файлов, если архив упакован БЕЗ опции dosify.
 
 |  |  | 
 | 
 
 | 1.40, RUR (?), 12:51, 24/12/2010  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | По мотивам Yo, создаём бат файл: echo 'zipinfo -1 $1 | while read z; do u=$(echo "$z"|iconv -f cp1252 -t cp850|iconv -f cp866); unzip $1 "$z" && mv -i "$z" "$u"; done' > brusunzip
 chmod +x brusunzip
 brusunzip my.zip
 |  |  | 
 
|  | | 2.42, Natrio (?), 13:01, 24/12/2010 [^] [^^] [^^^] [ответить] | +/– |  |  Я начинал именно с таких скриптов, только получаются они очень неуклюжими. Кроме того, zipinfo, будучи собранным без дополнительных опций (у меня так и было), НЕ ВЫВОДИТ русские имена в консоль, заменяя их на ?????, то есть эти скрипты на половине систем не будут работать без пересборки пакета unzip. А если уж пересобирать, то я решил лучше пропатчить и больше не мучаться со скриптами. 
 |  |  | 
 | 
 
 | 1.43, lucentcode (ok), 01:49, 07/04/2011  [ответить] [﹢﹢﹢] [ · · · ] | –1 +/– |  |  C unzip 6.0.1 вы можете использовать опцию -O cp866 когда надо распаковать файл, пожатый в windows. 
 |  |  | 
 
|  | | 2.44, aleks (??), 23:10, 03/03/2012 [^] [^^] [^^^] [ответить] | +/– |  | > C unzip 6.0.1 вы можете использовать опцию -O cp866 когда надо распаковать > файл, пожатый в windows.
 В ман не нашел такой опции
 |  |  | 
 | 
 
 | 1.45, aleks (??), 23:13, 03/03/2012  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  | Ну и в догонку под bsd 7.3 отлично работает такой способ например: 7z e -no-utf16 jtv.zip
 convmv -f cp866 -t koi8-r * --notest
 
 |  |  | 
 
|  | | 2.46, Natrio (?), 23:37, 03/03/2012 [^] [^^] [^^^] [ответить] | +/– |  |  Возможно, но статья не об этом, а о том, как НОРМАЛЬНО работать в *nix с ОБЫЧНЫМИ, то есть DOS/Win zip-архивами. 
 |  |  | 
 |  | | 3.47, aleks (??), 02:10, 04/03/2012 [^] [^^] [^^^] [ответить] | +/– |  | Ок, поясню. В приведенном мною примере jtv.zip архив тот самый виндовый архив,
 при распаковке unzipом оного можно увидеть кривую кодировку названий файлов.
 Приведенный мною пример как раз показывает как можно НОРМАЛЬНО работать с такими архивами.
 
 |  |  | 
 |  | |  | | 5.49, aleks (??), 20:32, 04/03/2012 [^] [^^] [^^^] [ответить] | +/– |  | Эта статья как раз из серии "а  мыши кололись, плакали, но продолжали жрать кактус" как ни посмотри. > В статье предлагается пропатчить zip и unzip, чтобы имена файлов всегда правильно 
> упаковывались и распаковывались.
 Да вот это и есть костыли. ППЦ сделать костыли для костылей. Зачем?
 Есть нормальный продукт 7z где уже из "коропки" все распаковывается и тут же можно перевести в нужную кодировку, замечу без всяких патчей и прочей заумной мути.
Просто написать одну строчку и вуаля. Куда проще то?
 Нет, конечно, можно с умным видом ложить патчи какие-то чето там пересобирать и еще держать в уме а как же на других серваках не забыть потом это все проделать или помнить... Бред.
 Не работает это глюкалово unzip ну и нафиг его есть другие инструменты которые могут это сделать быстро и парой команд.
 
 |  |  | 
 | 
 | 
 | 
 | 
 
 | 1.50, Ю.Т. (?), 13:37, 15/12/2012  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |      Да, это полезный совет  Всё верно  Пока существуют винды и WinZip и InfoZip,... большой текст свёрнут, показать |  |  | 
 
|  | | 2.51, Natrio (?), 14:05, 15/12/2012 [^] [^^] [^^^] [ответить] | +/– |  |  Не так уж всё и сложно :) Что касается "сопровождения", то дистрибутивы, как правило, позволяют собирать не только вручную, но и собирать пакеты, или подключать сторонние репозитории.
После установки пакетов их "сопровождение" ничем не отличается от всех прочих, а работа с ними – от работы со оригинальными zip и unzip, независимо от программ, которые их вызывают.
 Для себя в ArchLinux я собрал пакеты, заменяющие zip и unzip, и положил в AUR:
http://aur.archlinux.org/packages/zip-natspec/
 http://aur.archlinux.org/packages/unzip-natspec/
 Для Убунты (к Дебиану тоже подходят) мои пакеты собрали без меня :)
 http://launchpad.net/~frol/+archive/zip-i18n
 Насчёт других дистров не знаю, но в случае чего можно поступить аналогично.
 А кодировку libnatspec определяет самостоятельно, на основе языка локали. Если запустить с другой локалью, будет выбрана другая кодировка.
Юникодные архивы альтернативного формата infozip будут распаковываться как обычно, на это патчи не влияют.
 
 |  |  | 
 |  | | 3.52, Ю.Т. (?), 14:33, 15/12/2012 [^] [^^] [^^^] [ответить] | +/– |  |  > Не так уж всё и сложно :) > Что касается "сопровождения", то дистрибутивы, как правило, позволяют собирать не только
 > вручную, но и собирать пакеты, или подключать сторонние репозитории.
 > После установки пакетов их "сопровождение" ничем не отличается от всех прочих, а
 > работа с ними – от работы со оригинальными zip и unzip,
 > независимо от программ, которые их вызывают.
 ...
 Ну-с, что кому кажется сложным или простым, тема вечная. По-моему, основывать решение на доп. библиотеке, которая угадывает (!) кодировку, это уже ошибка. А не угадает, тогда как? Или вот тут предлагали: то шелл-скрипты, то в два действия архив раскрывать.
 Да вообще работа со сложно-уложенной информацией в консоли это скорее упражнение в йоге, но не работа. :)
 |  |  | 
 | 
 | 
 
 | 1.54, uropb (??), 15:45, 21/01/2015  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |  Для меня лично наиболее удобным оказался вариант с mc. Миднайт командер, оказывается, нормально заходит в архивы с русскими именами. При копировании из архива в нужную директорию русские имена сохраняются. И никаких патчей. 
 |  |  | 
 
 | 1.55, x230 (ok), 16:47, 21/06/2020  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |  В Manjaro KDE (в dolphin) такая проблема решилась после того, как я сделал следующее: # Удалил:
zip
 unzip
 # Установил:
zip-natspec
 unzip-natspec
 libnatspec
 
 |  |  | 
 
 
 | 1.57, Лев (?), 18:30, 05/09/2020  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |  Привет из будущего! Столкнулся с этой столетней проблемой, когда запускал unzip по SSH через PHP из-под WSL Win10 😳 Оказалось, что локаль консоли удаленного хоста зависит от локали локального хоста (и от настроек SSH), поэтому у меня при подключении из-под Windows была локаль C.UTF-8, а из-под соседних linux'ов en_US.UTF-8, и соответственно из-под linux все было нормально, имена файлов после unzip отображались корректно, а из-под windows - знаки вопроса. Так что достаточно просто поменять локаль на en_US.UTF-8 или ru_RU.UTF-8. Надеюсь кому-то поможет.
 php -r "print_r(shell_exec(\"ssh user@host 'LANG=ru_RU.utf8 && unzip filename.zip'\"));"
 
 |  |  | 
 
 | 1.58, Аноним (56), 14:48, 12/10/2020  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |  Удивительно, насколько ни один из архиваторов  в ключая unzip  на linux не в сос... большой текст свёрнут, показать |  |  | 
 
|  | | 2.59, Аноним (56), 15:15, 12/10/2020 [^] [^^] [^^^] [ответить] | +/– |  |  На самом деле, алгоритм там чуууточку сложнее, ведь ещё и в ANSI зипы встречются (но чтоб без дублирования в UTF8 - исключительно редко). В скрипте ziplist это учитывается, совсем идеальный алгоритм можно подсмотреть там. 
 |  |  | 
 | 
 
 |