Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.11.2006, 21:40
Аватар для Ross
Ross Ross вне форума
Активный
 
Регистрация: 15.10.2005
Адрес: Казань
Сообщения: 250
Репутация: 30
Смущение Поисковики - перекодировка слов

Вопросик такой:
все знают поисковики, так вот - к примеру 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  
Старый 01.11.2006, 22:36
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Яндекс переводит в такой вид все русские буквы, даже если они идут вместе с английскими (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  
Старый 02.11.2006, 17:15
Аватар для Ross
Ross Ross вне форума
Активный
 
Регистрация: 15.10.2005
Адрес: Казань
Сообщения: 250
Репутация: 30
По умолчанию

Спасибо огромное, а то у меня есть исходник, да только он перекодируе то что находится в файле, а исправлять процедуру задолбался. Спасибо БОЛЬШОЕ!
Ответить с цитированием
  #4  
Старый 09.02.2010, 01:14
w1zard w1zard вне форума
Прохожий
 
Регистрация: 04.07.2008
Сообщения: 26
Репутация: 10
По умолчанию

Друзья, простите за "up". Подскажите пожалуйста как эту же функцию инвертировать? То бишь нормальные "читабельные" русские символы загнать в такой код? Буду очень благодарен за помощь в этом вопросе.
Может компонент есть какой под 2009\2010 Делфю? Нарыл, что вроде бы для этих целей раньше был TNMURL, но его давно вырезали из комплектации((

P.S. Мануалы уже скурил, бубен сломал...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter