Транслитерация
Добавлено: 23 дек 2008, 09:47
Неоднокартно приходится сталкиваться с "проблемой русских имен файлов". Суть проблемы заключается в использовании различных кодировок в файловых системах на различных ОС, отсутствие у многих архиваторов поддержки кодировок или поддержки перевода имен файлов из одной кодировки в другую при архивации или разархивации (в выгодную сторону отличается 7zip), отсутствие понятия "кодировка" у ftp-серверов, проблемы с некорректным перекодированием имен файлов при доступе к контенту веб-серверов и т.д. и т.п. В результате невообразимое искажение имен файлов - гарантировано.
К счастью, существует универсальное (хотя и не для всех случаев подходящее) решение - перевод имен файлов, предназначенных для использования в одной из указанных ситуаций, в транслит. Желательно - с рекурсивным обходом каталога и поиском файлов по маске.
Скрипты для решения данной проблемы в Линуксе у меня давно есть, причем в двух вариантах - на php и bash. Однако буквально вчера пришлось из-заугольными методами копировать на линуксовый веб-сервер огромный каталог с рускоязычными файлами и каталогами. При наличии аналогичных утилит под виндовс проблемы не случилось-бы вообще. Самое интересное, что совершенно бесплатные утилиты для решения данной задачи в интернете без проблем находятся. Однако! Одним нужна java, другие делают кучу дополнительной работы, третьи написаны на visual basic и требуют установки дополнительных библиотек и т.д. В то время как нужна
Один из моих сотрудников (студент пятого курса) пообещался по быстрому склепать такую утилиту сегодня вечером.
Если у него вдруг не случится праздник, не придут гости, не прорвет отопление (тук-тук по дереву чтоб не сглазить на таком морозе), не выключат свет и т.д. (господа студенты - дальше придумайте сами, вы в этом деле специалисты, знаю - сам таким был), то к утру получим рабочую вещь. Код выложим сюда, вычистим от возможным багов, ускорим, если понадобится.
Если-же один из форсмажоров (не)ожиданно случится, то сделаю завтра с утра ее сам на freepascal и тоже выложу.
В любом случае - получится полезная вещь.
К счастью, существует универсальное (хотя и не для всех случаев подходящее) решение - перевод имен файлов, предназначенных для использования в одной из указанных ситуаций, в транслит. Желательно - с рекурсивным обходом каталога и поиском файлов по маске.
Скрипты для решения данной проблемы в Линуксе у меня давно есть, причем в двух вариантах - на php и bash. Однако буквально вчера пришлось из-заугольными методами копировать на линуксовый веб-сервер огромный каталог с рускоязычными файлами и каталогами. При наличии аналогичных утилит под виндовс проблемы не случилось-бы вообще. Самое интересное, что совершенно бесплатные утилиты для решения данной задачи в интернете без проблем находятся. Однако! Одним нужна java, другие делают кучу дополнительной работы, третьи написаны на visual basic и требуют установки дополнительных библиотек и т.д. В то время как нужна
- 1. консольная утилита
2. функционирующая на чистой, только-что установленной win32-системе.
3. принимающая два параметра: каталог_для_поиска маска_транслитируемых_файлов
4. НИЧЕГО, КРОМЕ УКАЗАННОГО - НЕ ДЕЛАЮЩАЯ
Один из моих сотрудников (студент пятого курса) пообещался по быстрому склепать такую утилиту сегодня вечером.
Если у него вдруг не случится праздник, не придут гости, не прорвет отопление (тук-тук по дереву чтоб не сглазить на таком морозе), не выключат свет и т.д. (господа студенты - дальше придумайте сами, вы в этом деле специалисты, знаю - сам таким был), то к утру получим рабочую вещь. Код выложим сюда, вычистим от возможным багов, ускорим, если понадобится.
Если-же один из форсмажоров (не)ожиданно случится, то сделаю завтра с утра ее сам на freepascal и тоже выложу.
В любом случае - получится полезная вещь.