Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2014, 17:22   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию Проблемы с кириллицей и символами в ссылках

Здравствуйте, уважаемые.
Вопрос, возможно, и простой, но даже не знаю как его и сформулировать, потому что не знаю как назвать "кодировку", в которую преобразуются символы ссылки. Как зашифровать/дешифровать или где найти соответствия, чтоб программно менять одно на другое?
Пример.
Есть страница сайта, например:
http://kibergrad.com/?do=srh&srh=%D0...82%D0%BE%D0%BD
или она же, но с понятными буквами:
http://kibergrad.com/?do=srh&srh=Роз....+Вальс-бостон

И, если не сложно, как сделать так, чтобы текст, получаемый с сайта через idHTTP1.Get в строку (обычную, string), содержал нормальные русские буквы?
**********
upd:
Так, с кодировкой текста страницы успешно справился utf8toansi
Код:
html:=utf8toansi(idHTTP1.Get('http://kibergrad.com/?do=srh&srh=%D0%A0%D0%BE%D0%B7%D0%B5%D0%BD%D0%B1%D0%B0%D1%83%D0%BC+%D0%90.+%D0%92%D0%B0%D0%BB%D1%8C%D1%81-%D0%B1%D0%BE%D1%81%D1%82%D0%BE%D0%BD'));
Вопрос с непонятной кодировкой в ссылке открыт.

Последний раз редактировалось Ship_1; 13.08.2014 в 17:45.
Ship_1 вне форума Ответить с цитированием
Старый 13.08.2014, 17:53   #2
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Кодировка вполне понятная. Это UTF-8 (что по стандарту), коды которого закодированы в шестнадцатиричной форме.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 13.08.2014, 18:00   #3
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

В соседней теме упомянули функцию URLEncode компонента IdURI. Для преобразования адреса используйте ее.
Silver_S вне форума Ответить с цитированием
Старый 13.08.2014, 18:13   #4
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Vapaamies, спасибище!
Получается, шестнадцатиричная цифра после "%" соответствует коду ASCII таблицы 1251.
Silver_S, спасибо за ссылку, но там используется новый компонент, а загружать лишними компонентами программку не хочется. Зная "теорию" из ответа Vapaamies можно самому легко составить функцию для преобразования адреса: сначала Ord(S), а потом IntToHex(N, 2).
***
как бы ни так... ASCII-1251 и коды UTF-8 - совсем разные вещи... Есть что-то типа Ord(S), но дающего код символа в UTF-8? (Delphi 7)

Последний раз редактировалось Ship_1; 13.08.2014 в 19:14.
Ship_1 вне форума Ответить с цитированием
Старый 13.08.2014, 20:00   #5
Avazart
Форумчанин
 
Аватар для Avazart
 
Регистрация: 13.08.2011
Сообщений: 184
По умолчанию

http://www.cyberforum.ru/blogs/131347/blog608.html
Avazart вне форума Ответить с цитированием
Старый 13.08.2014, 20:01   #6
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Ship_1 Посмотреть сообщение
загружать лишними компонентами программку не хочется. Зная "теорию"...
Знать теорию и воплощать ее в реальность, конечно интересно и полезно, но использование готового кода обычно эффективнее написания и отладки своего велосипеда с последующим вылавливанием неочевидных багов. Так что небольшая "загрузка лишними компонентами" с лихвой компенсируется.

Цитата:
Сообщение от Ship_1 Посмотреть сообщение
Есть что-то типа Ord(S), но дающего код символа в UTF-8? (Delphi 7)
Если хочется разобраться, посмотрите википедию про кодирование UTF-8 и URL.
Silver_S вне форума Ответить с цитированием
Старый 13.08.2014, 21:03   #7
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Особенно учитывая, что IdUri и так вроде неочевидно компилится в сборку через IdHttp.
Поправьте если я не прав.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 13.08.2014, 21:32   #8
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Цитата:
Сообщение от Ship_1 Посмотреть сообщение
Есть что-то типа Ord(S), но дающего код символа в UTF-8? (Delphi 7)
В UTF-8 не код, а коды символов, поскольку символы кодируются последовательностями байт -- от 1 до 4. В Википедии всё есть.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрещенные символы в ссылках (абсолютно) xrob HTML и CSS 1 25.04.2013 21:37
Обитых ссылках на страницы прошлого сайта Vedaslav WordPress и другие CMS 1 23.02.2013 14:38
Как использовать переменные в ссылках на ячейки Klamm Microsoft Office Excel 6 14.04.2012 01:44
Всё та же проблема с кириллицей в БД Prok186 БД в Delphi 0 01.11.2011 09:36
FileSearch не ищет ф-лы с кириллицей maximusu Microsoft Office Excel 0 23.10.2009 18:12