|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Поисковики - перекодировка слов
Вопросик такой:
все знают поисковики, так вот - к примеру Yandex: вводишь например слово "руссификатор", и нажимаешь "поиск", и в поле, где указан адрес странички появиться такая строка: http://www.yandex.ru/yandsearch?rpt=...%E 0%F2%EE%F0 , где %F0%F3%F1%F1%E8%F4%E8%EA%E0%F2%EE%F0 - перекодировавнное слово "руссификатор". Причём, слова принимают эту кодировку, если они на русском языке, если же ищем слово, которое написано на английском языке, то оно не перекодируется. Как я зная - это вроде имеет отношение к шеснадцетиричной системе, как мне реализовать перекодировку только русских слов? |
#2
|
||||
|
||||
Яндекс переводит в такой вид все русские буквы, даже если они идут вместе с английскими (abcdабвг = abcd%E0%E1%E2%E3). Ты прав, %E0 - это код символа в Hex виде. Получить его можно так:
Код:
function CharToHex( c: char ): string; begin Result := '%' + IntToHex( Ord( c ), 2 ); end; Теперь надо только выделить из строки все русские буквы, а остальные не трогать. Пример: Код:
function StrToHex( s: string ): string; var i: integer; begin for i := 1 to Length( s ) do case Ord( s[i] ) of 168, 184, 224..255, 192..223: Result := Result + '%' + IntToHex( Ord( s[i] ), 2 ); else Result := Result + s[i]; end; end; |
#3
|
||||
|
||||
Спасибо огромное, а то у меня есть исходник, да только он перекодируе то что находится в файле, а исправлять процедуру задолбался. Спасибо БОЛЬШОЕ!
|
#4
|
|||
|
|||
Друзья, простите за "up". Подскажите пожалуйста как эту же функцию инвертировать? То бишь нормальные "читабельные" русские символы загнать в такой код? Буду очень благодарен за помощь в этом вопросе.
Может компонент есть какой под 2009\2010 Делфю? Нарыл, что вроде бы для этих целей раньше был TNMURL, но его давно вырезали из комплектации(( P.S. Мануалы уже скурил, бубен сломал... |