LINUX.ORG.RU

Русские имена файлов в .zip архиве


0

0

Как распаковать .zip архив, содержащий файлы с русскими именами, чтобы эти имена читались корректно?

unzip arxiv.zip выдает файлы с кракозябрами вместо имени.

Я слышал, что unzip по умолчанию перекодирует имена из cp850 в cp1252. Если выполнить
$ unzip arxiv.zip | iconv -f cp1252 -t cp850 | iconv -f cp866 ,
то список разархивируемых файлов в консоли выглядит правильно, но реально записанные на диск файлы опять именуются кракозябрами.

Система Suse 10.2, локаль utf-8, unzip-5.52-34.

Re: Русские имена файлов в .zip архиве

Не так. Если не ошибаюсь, сначала из (внимание!) l1 в ibm850, затем из cp866 в что нужно

router ★★★★★ ()
Ответ на: Re: Русские имена файлов в .zip архиве от router

Re: Русские имена файлов в .zip архиве

Прошу прощения, невнимательно прочитал вопрос. Патченный unzip валяется где-то в сети, я находил в rpm.

router ★★★★★ ()
Ответ на: Re: Русские имена файлов в .zip архиве от router

Re: Русские имена файлов в .zip архиве

Спасибо, попробую патченый unzip.
L1, говорите.. Вот так тоже не помогает
unzip regl1.zip | recode l1..IBM850 | recode 866..u8

Unzip выводит правильный список файлов, а на диск пишет кракозябры.

SlonoInquisitor ()
Ответ на: Re: Русские имена файлов в .zip архиве от anonymous

Re: Русские имена файлов в .zip архиве

Спасибо!

Программисты Suse добавили патч, позволяющий избежать двойной перекодировки.

From the ChangeLog: Thu May 3 15:25:39 CEST 2007 - pth@suse.de

- Add patch from Takashi Iwai that adds a new option (-S) to unzip and infozip that disables file name translation (#267901).

Поэтому инструкция по борьбе с zip архиом, содержащим файлы с русскими именами, такова. Распаковываем архив:

# unzip -S archive.zip

Получаем на выходе файлы с кодировкой названий cp866. Перекодируем их:

# convmv -f cp866 -t UTF-8 --notest *

SlonoInquisitor ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.