| |
| 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 | ....
:)
|  | | |
| 1.18, мше, 08:53, 02/12/2010 [ответить] [смотреть все]
| +/– | |
> более "продвинутые" форматы архивов
(RAR, 7zip) тоже как-то решают эту проблему;
нифига они не решают. вон у меня щас лежит rar, который даже не распаковывается
|  | | |
| 1.20, fank, 13:10, 02/12/2010 [ответить] [смотреть все]
| +/– | |
о, сколько лисапетов сразу
rusxmms.sf.net
удивитесь, как грамотные люди давным давно решили все эти проблемы
|  | | |
| 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".
Рекомендую для проверки патчей и локалей обратить на это внимание.
|  | | |
| 1.32, Forth, 14:55, 12/12/2010 [ответить] [смотреть все]
| +/– |
Использую ваш патч, в unzip появились опции -I и -O и все равно вопросики в консоли. :(
Система - Fedora 14. Где копать?
|  | | |
| 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
|  | | |
| 1.39, pva0xd, 17:38, 23/12/2010 [ответить] [смотреть все]
| +/– |
Natrio, а не могли бы вы пояснить в каких случаях нужена опция -K? И вообще зачем изменёно умолчание для 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.45, aleks, 23:13, 03/03/2012 [ответить] [смотреть все]
| +/– |
Ну и в догонку под bsd 7.3 отлично работает такой способ например:
7z e -no-utf16 jtv.zip
convmv -f cp866 -t koi8-r * --notest
|  | | |
| |
| |
| 3.47, aleks, 02:10, 04/03/2012 [^] [ответить] [смотреть все]
| +/– |
Ок, поясню.
В приведенном мною примере jtv.zip архив тот самый виндовый архив,
при распаковке unzipом оного можно увидеть кривую кодировку названий файлов.
Приведенный мною пример как раз показывает как можно НОРМАЛЬНО работать с такими архивами.
|  | | |
| |
| 4.48, Natrio, 08:51, 04/03/2012 [^] [ответить] [смотреть все]
| +/– |
В статье выше тоже приводятся примеры таких костылей, только это не называется "нормально работать". Это называется "перекодировать кривую кодировку имён файлов после распаковки", это ДАВНО ИЗВЕСТНО, и статья совсем не об этом.
В статье предлагается пропатчить zip и unzip, чтобы имена файлов всегда правильно упаковывались и распаковывались.
zip -r фрхив.zip файлы и каталоги
unzip архив.zip
Также после этого можно использовать GUI-шные оболочки, которые используют zip и unzip для упаковки и распаковки.
Мне известны пакеты с этими патчами для ubuntu/debian
https://launchpad.net/~frol/+archive/zip-i18n
и для ArchLinux:
http://aur.archlinux.org/packages.php?ID=47921
https://aur.archlinux.org/packages.php?ID=47920
|  | | |
| |
| 5.49, aleks, 20:32, 04/03/2012 [^] [ответить] [смотреть все]
| +/– | |
Эта статья как раз из серии "а мыши кололись, плакали, но продолжали жрать кактус" как ни посмотри.
> В статье предлагается пропатчить zip и unzip, чтобы имена файлов всегда правильно
> упаковывались и распаковывались.
Да вот это и есть костыли. ППЦ сделать костыли для костылей. Зачем?
Есть нормальный продукт 7z где уже из "коропки" все распаковывается и тут же можно перевести в нужную кодировку, замечу без всяких патчей и прочей заумной мути.
Просто написать одну строчку и вуаля. Куда проще то?
Нет, конечно, можно с умным видом ложить патчи какие-то чето там пересобирать и еще держать в уме а как же на других серваках не забыть потом это все проделать или помнить... Бред.
Не работает это глюкалово unzip ну и нафиг его есть другие инструменты которые могут это сделать быстро и парой команд.
|  | | |
|
|
|
|
| |
| 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,
> независимо от программ, которые их вызывают.
...
Ну-с, что кому кажется сложным или простым, тема вечная. По-моему, основывать решение на доп. библиотеке, которая угадывает (!) кодировку, это уже ошибка. А не угадает, тогда как? Или вот тут предлагали: то шелл-скрипты, то в два действия архив раскрывать.
Да вообще работа со сложно-уложенной информацией в консоли это скорее упражнение в йоге, но не работа. :)
|  | | |
|
|
|
|