The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Работа с русскими именами файлов в ..."
Отправлено Ю.Т., 15-Дек-12 13:37 
> Одна из неожиданных проблем, возникающих при обмене файлами с пользователями Windows -
> странное поведение ZIP-архивов. Казалось бы, достаточно правильно настроить кодировки...
> Не тут-то было!

...

Да, это полезный совет. Всё верно. Пока существуют винды и WinZip и InfoZip, придётся иметь дело с архивами, из которых файлы на юниксах будут извлекаться с искорёженными названиями.

Но! Описанное решение проблемы, по-моему, не лучше самой проблемы, имея в виду его собственную сложность и трудоёмкость поддержки. Я то же самое давно решаю несколько иначе и, мне кажется, удобнее. Правда, я ничего не делал с zip-ом.

Что же сделано? Во-первых, исключены все переделки кодировок в процедурах вывода unzip -- в трёх местах (два в fileio.c и одно, кажется, в list.c) три вызова спрятаны под комментарий. Эти места легко отыскиваются во всех версиях unzip от 5-й до 6-й, и вполне просто переделываются. Во-вторых, пересобранный unzip называется, скажем, unzip0, и укладывается хоть бы и в ~/bin. В-третьих, немного дорабатываются скрипты работы с "файловой системой UZIP" из состава midnight commander (т.е., открытие архивов как обычных каталогов). В них: (а) меняются вызовы unzip на unzip0; (б) добавляется перекодировка получаемого списка названий с помощью iconv (этот тул давно присутствует во всех линуксах из коробки, и даже в freebsd без него не обходятся); (в) изменённые скрипты (их можно сделать несколько, для разных кодировок исходного архива) укладываются в ~/.mc/ или ~/.config/mc (зависит от версии mc). После этого можно в коммандере, как обычно, открывать архивы как каталоги, работать с файлами и т.д.

Достоинства изложенного здесь решения: 1) делается просто 2) даёт удобный инструмент 3) не требует целовать никаких разработчиков ни в какие места 4) сохраняет работоспособность при сменах дистрибутива и даже, с очевидными мелкими доработками, при сменах системы в пределах юниксов. Наконец, оно оставляет возможность выбора окончательного решения за человеком, как самым лучшим опознавателем кодировок. :)

Недостатки изложенного здесь решения: 1) влияет лишь на один инструмент (mc) и не влияет на unzip общесистемной доступности 2) требует кой-каких дополнительных движений в mc (active VFS list->Free VFSs now и что-то вроде cd abc.zip#uzipu), если кодировка в архиве была не предугаданной (не той, с которой работает доработанный mc-ский скрипт для uzip).


 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру