LINUX.ORG.RU

zip-архивы из винды: в какой кодировке там имена файлов?


0

0

Есть архив, созданный в виндах (ХР), содержаший файлы с русскими именами. Имена НЕ в uft-8/cp866/cp1251 (проверил). Так что-же там за кодировка используется? (Локаль -- koi8-r)

И попутный вопрос: нужно запаковать в zip файлы с русскими именами и отдать виндузятнику. Локаль -- koi8-r. Как-нибудь можно сделать так, что бы ему не пришлось потом перекодировкой заниматься?

★★★★★

В какой-то рассылке нашел инфу о том, что info-zip коверкает имена файлов до полной неузноваемости. Так-же нашел патч для перекодировки вот тут: https://bugzilla.altlinux.org/attachment.cgi?id=532

Он для версии 5.50, но без проблем подошел к 5.52 (http://heanet.dl.sourceforge.net/sourceforge/infozip/unzip552.tar.gz).

Только что проверил: все работатет! Виндовые архивы перекодируются на лету!

Harliff ★★★★★
() автор топика

Попутный вопрос: нужно запаковать в zip файлы с русскими именами и отдать виндузятнику. Локаль -- koi8-r. Как-нибудь можно сделать так, что бы ему не пришлось потом перекодировкой заниматься?

Harliff ★★★★★
() автор топика
Ответ на: комментарий от Harliff

Тут на самом деле нет однозначного ответа. WinRAR и pkzip25 кодируют в cp866. Сам неоднократно гемороился с *.zip, передавая/получая файлы упакованные на машине с win2k на winxp и наоборот. imho для виндузятников лучше паковать в *.rar - там используется unicode.

kosmonavt
()
Ответ на: комментарий от kosmonavt

> imho для виндузятников лучше паковать в *.rar - там используется unicode.

Это в новых версиях чтоль? У меня rar паковал в в кодировке локали.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

>Это в новых версиях чтоль? У меня rar паковал в в кодировке локали

Я имел в виду то, что имена файлов в rar хранятся в юникоде. Пакуешь, естественно, в своей локали, а rar при паковке перекодирует имена в юникод. На распаковке - из юникода переводит в ту локаль, которая у тебя установлена.

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