Просмотр полной версии : Как определить есть ли в имени файла юникод-символы?
Поясню, для чего мне это нужно.
Программа работает только с ANSI-именами файлов и не признает файлы, в которых есть хоть один юникод-символ (типа длинного тире, двойных угловых скобок и др. символов, которые получаются при сохранении некоторых интернет-страниц на диск с именем по-умолчанию).
Можно использовать прогу для массового переименования файлов и задать маску, которая содержит допустимые символы.
Можно использовать прогу для массового переименования файлов и задать маску, которая содержит допустимые символы.
Для интернет-страниц может не получится, т.к. имена файлов могут оказаться в гиперссылках на папки с графикой (если сохранять в режиме html).
Точно, так. А что мешает сохранять в mht тогда?
Можно использовать прогу для массового переименования файлов и задать маску, которая содержит допустимые символы.
А подробнее можно? Какой прогой? И что она будет делать с недопустимыми символами, вырезать? Нужно чтобы заменяло, допустим, на нижнее подчеркивание.
Точно, так. А что мешает сохранять в mht тогда?
Не люблю этот формат вообще. Только в самых крайних случаях, когда по-другому никак. Занимает больше места, тормознуто работает, Opera вообще косячно с ним работает.:no:
Ну тогда логическое рассуждение. В реестре есть ключ, отрубающий создание имён стандарта 8.3 . По умолчанию он включен, значит имена генерятся. Тогда надо просто найти, как к ним обратиться. Однозначно, WSH.
Прог таких сотни, но как заметили выше, если переименовать, то побьются ссылки на этот файл.
...создание имён стандарта 8.3... Тогда надо просто найти, как к ним обратиться...
А смысл какой в этом действии? Мне нужно переименовать файлы с скормить их сторонней проге (естественно, исходников ее у меня нет).
Я не хочу из русских букв получить непонятно что.
Например, слово Администратор транслируется в формат 8.3 в строку 9335~1
Возвращаясь к сообщению #3 :
Узнаешь ты, есть символы или нет, и что? Если ты изменишь имя файла, у тебя побьются ссылки на этот файл.
Я бы скопировал проблемный каталог FAR-ом. На файлах, в которых есть Unicode-символы, FAR сругается, что не может их найти. Эти файлы и надо будет в проводнике переименовать.
Узнаешь ты, есть символы или нет, и что? Если ты изменишь имя файла, у тебя побьются ссылки на этот файл.
Главное получить этот список. Потом уже можно будет на html-ки натравить replacer, который исправит внутри ссылки.
Я бы скопировал проблемный каталог FAR-ом. На файлах, в которых есть Unicode-символы, FAR сругается, что не может их найти. Эти файлы и надо будет в проводнике переименовать.
Лобовой метод. А если таких файлов будут тысячи, будешь сидеть и пару тысяч раз нажимать в фаре Skip. :fool:. Или если общий размер файлов такой, что у тебя нет места куда их скопировать. Короче, это не решение проблемы.
Копни в сторону WSH. Наверняка, это базовые строковые функции. А если нет, то помжно тупо посимвольно проверить код символов в имени файла.
Для интернет-страниц может не получится, т.к. имена файлов могут оказаться в гиперссылках на папки с графикой (если сохранять в режиме html).
Посмотри вот здесь, кажется то, что тебе нужно:
переименовывает фаилы и может заменить ссылки
http://matrix990.narod.ru/files/replacer.zip - 375kb
Нужные библиотеки здесь:
http://www.dll.ru/dll/10159.html - MFC42D.DLL
http://www.dll.ru/dll/20628.html - MSVCRTD.DLL
Копни в сторону WSH. Наверняка, это базовые строковые функции. А если нет, то помжно тупо посимвольно проверить код символов в имени файла.
До WSH еще не добрался, но кое-что выяснил.
Название файла сохраняется на диск NTFS в Unicode, а в файле .html (ANSI-кодировка, cp1251) в зависимости от браузера:
IE
Юникод-символ, для которого есть соответствие в cp1251, заменяется на этот символ.
Юникод-символ, для которого нет соответствия в cp1251, заменяется на &#десятичный_код_символа;, например −.
Opera (Save With Images Use Subfolder = true)
Юникод-символ, для которого есть соответствие в cp1251, заменяется на этот символ.
Юникод-символ, для которого нет соответствия в cp1251, заменяется на ?. При этом в NTFS он сохраняется как юникод и поэтому ссылки на каталог _files теряются.
Firefox
Все Юникод-символы заменяются на UTF-8 код символа, например %E2%88%92
Пробовал программы:
Super Replacer
Не реализованы масочные последовательности с отрицанием, поэтому ничего не получиться сделать
(+собственный формат регулярных выражений)
BatchRename Pro
File Renamer Deluxe
Тоже только замена конкретных символов на другой
FlashRenamer
Работает не со всеми Юникод символами, а только с теми, для которых есть соответствие в cp1251.
Русские символы в regexp-е не поддерживаются
т.е. при переименовании по регулярному выражению
[^\x00-\xFF] заменить на "_"
все русские символы в имени файла заменяются на подчеркивание
какие еще предложения?
Пробовал различные оффлайн-браузеры: WEBSITEEXTRACTOR, TeleportPro, OffliteExplorer.
В них также встречается функция переименования вплоть до DOS 8.3, НО не все симолы
удается переделать... Пробую поискать еще в двух направлениях - продолжить поиск оффлайнера
и капнуть сам WIN в службах и реестре.
А я все продолжаю пробовать разные rename-еры...
Tiger Files Renamer
Тоже ANSI-приложение, Unicode не понимает.
Автор сказал, что можно попробовать заменить ? на _
Но этот скрипт ничего не делает.
Offline Explorer 5.0.0.2752, например, переименовывает
http://www.livejournal.com/schools/?ctc=RU&sc=M%D0%BE%D1%81%D0%BA%D0%B2%D0%B0+%D0%B8+%D0%9C%D 0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1% 8F+%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&cc=%D0%9A%D1%83%D1%87%D0%B8%D0%BD%D0%BE&sid=194857
в
file://localhost/C:/Export/www.livejournal.com/schools/ctcruscm_25d0_25be_25d1_2581_25d0_25ba_25d0_25b2_2 5d~4.htm
а
http://www.livejournal.com/schools/?ctc=RU&sc=M%D0%BE%D1%81%D0%BA%D0%B2%D0%B0+%D0%B8+%D0%9C%D 0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1% 8F+%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&cc=%D0%9A%D1%83%D1%87%D0%B8%D0%BD%D0%BE&sid=121859
в
file://localhost/C:/Export/www.livejournal.com/schools/ctcruscm_25d0_25be_25d1_2581_25d0_25ba_25d0_25b2_2 5d~3.htm
или
(http://library.cmgsh.tp.edu.tw/document/97資料庫研習/《大英百科全書線上繁體中文版》.ppt)
http://library.cmgsh.tp.edu.tw/document/97%E8%B3%87%E6%96%99%E5%BA%AB%E7%A0%94%E7%BF%92/%E3%80%8A%E5%A4%A7%E8%8B%B1%E7%99%BE%E7%A7%91%E5%8 5%A8%E6%9B%B8%E7%B7%9A%E4%B8%8A%E7%B9%81%E9%AB%94% E4%B8%AD%E6%96%87%E7%89%88%E3%80%8B.ppt
в
C:\Export\library.cmgsh.tp.edu.tw\document\97_25e8 _25b3_2587_25e6_2596_2599_25e5_25ba_25ab_25e7_~1\_ 25e3_2580_258a_25e5_20d64a06412.ppt
Настройки такие: Export to - Folder on disk -
- Filename format :Juliet CD-R
Также сам меняет в исходниках страниц "их" URL на локальный.
Если такой вариант подойдет ссылка здесь:
http://rapidshare.com/files/111890020/OEE-5.0.2752_FULL.rar
или
http://ifolder.ru/7558668
размер:6.34 MB
Да, если бы конкретную ссылку на страницу или сайт,
которую надо переделать из UNICODE, было-бы проще
с экспериментами ;)
6ugoH, попробовал я этот Offline Explorer
Честно говоря, не особо впечатлило в плане решения моей проблемы.
А вот свое название оправдывает сполна.
Т.е. это специализированный софт для загрузки сайтов целиком и последующего просмотра в оффлайне.
Просто так переименовать файлик нельзя, открыть сохраненный файл с диска с юникод-символами не дает.
Так что для меня тема все еще остается актуальной.
Вот, совершенно случайно столкнулся со следующей проблемой. Знакомая девчонка просила записать файлы на DVD-диск. Все бы ничего, талько ХР определила их как юникод... Неро файлы видел, переименовывал их в чудеса с хвостами (типа ...~2; ...~1 и т.д.) УльтаИсо, Сатерия их видят, но дообавить не могут( Имя одного файла я переделал в html и оригинальное имя сохранил в txt. Архив здесь:
http://www.rapidshare.ru/937347
или
http://ifolder.ru/10693765
Распаковывать только винраром! Тотал командер их на диск не пишет вообще(
Если это похоже на твои файлы, тогда см. скрины:
http://www.rapidshare.ru/937284
или
http://ifolder.ru/10693756
Один (screen2)-как файлы наподобие тех, музыкальных, выглядят в ХР.
Другой (screen1)-как их можно переименовать Тотал командером в WIN9x или МЕ)
Еще у меня возник странный глюк - при паковки винраром в МЕ в архив, в ХР они реально выглядят по-русски! С установкой шрифтов пока не эксперементировал. Может эта информация тебе поможет.
Ну, это уже приколы с кодировками. Мне твои "чудеса" не сильно помогли :)
Вот так это отображается в проводнике:
001_Àíäðåé Äàíèëêî - Îòðûâàÿñü îò çåìëè.mp3
Вот так это отображается в far-е:
001_Aia?ae Aaieeei - Io?uaaynu io caiee.mp3
А вот что здесь зашифровано :)
0 0 1 _ А н д р е й Д а н и л к о - О т р ы в а я с ь о т з е м л и . m p 3
вместо пробелов (код 20) нулевые символы (код 0)
Честно говоря, меня подобные глюки не сильно интересуют.
К теме относится например файлик с таким именем:
t−est_«b«c—.htm
Файл с таким именем можно переименовать. Программа называется NexusFileV.
Выделяешь нужные файлы в окне проводника, F6-групповое переименование,
Настройка шаблона-Замена, создаешь шаблон. См.скрин, там длинные тире
заменены на подчеркивание, « на цифру 3.
Программу можно скачать здесь:
http://xiles.net/pds/NexusFile5Setup.exe
скрин здесь:
http://www.rapidshare.ru/1033284
http://ifolder.ru/11926979
Удачи! :-)
vBulletin® v3.8.9, Copyright ©2000-2026, vBulletin Solutions, Inc.