Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Внизрусский язык в Html и Delphi Найти похожие ветки
← →
Accel (2007-05-17 14:12) [0]Добрый день!
может замечали, если в яндексе ищем слово на английском, например, oleg, то получаем:
http://www.yandex.ru/yandsearch?text=oleg
а если ищём олег - по-русски, то получается:
http://www.yandex.ru/yandsearch?text=%EE%EB%E5%E3
Тоесть %EE%EB%E5%E3 = олег.
Вопрос в том, как при помощи Delphi преобразовывать %EE%EB%E5%E3 в читаемый русский язык.
Заранее спасибо!!!
← →
Megabyte © (2007-05-17 14:18) [1]Парсишь строку парметров: % - разделитель символов и сами ASCII-коды в 16-чной системе счисления
← →
Accel (2007-05-17 15:43) [2]эээ, а по-русски.
← →
Megabyte © (2007-05-17 15:59) [3]Парсить - разбирать
ASCII-коды - код символа согласно ASCII
Если и сейчас не понял, то забей на эту задачу...
← →
Accel (2007-05-17 16:10) [4]Окей, если я правильно понял, сопоставлять 16-ричные коды из этой строки таблице кодов ASCII, принимая, как разделитель кодов символ "%"
Это ясно, вот как сопоставлять коды - в этом вопрос?
написать
EE = о
EB = л ... и т.д.? или есть стандартная функция для этого?
← →
Megabyte © (2007-05-17 16:32) [5]Функция chr - по коду выдает символ! Только не забудь, что у тебя 16-тиричный код.
← →
Accel (2007-05-17 17:17) [6]Всё получилось:
procedure TForm1.Button1Click(Sender: TObject);
var s,res:String;
begin
s:=Edit1.Text; // исходный 16-ричный код от браузера
while pos("%",s)>0 do delete(s, pos("%",s),1); // удаляем все разделительные знаки "%"
while pos("+",s)>0 do // заменяем знаки "+" в строке на "20" - пробел в ascii
begin
insert("20",s,pos("+",s));
delete(s, pos("+",s),1);
end;
SetLength(res,round(Length(s)/2)); // устанавливаем длину буфера res равной половине от исходной последовательности ascii (т.к. там 2 символа кодируют один)
HexToBin(PChar(s),PChar(res),Length(s)); // преобразуем 16-ричную последовательность в обычный текст
Edit2.Text:=res; // выводим результаты
end;
← →
G_M_S © (2007-05-17 17:47) [7]Господа, все уже сделано до вас.
Смотрите в сторону Indy. Подключаете юнит IdURI и пишете такое:
s := TidURI.ParamsEncode("Олег");
получаете в переменную "s" соотв. строку. Обратно там же ParamsDecode.
ЗЫ: у меня TD 2006, в Дельфи 6/7, как мне помнится, была старая Инди, где отдельным компонентом кодер URI был на панельке Indy Misc, хотя я его могу путать с другими кодерами/декодерами, коих там ДОФИГА, попрошу заметить.
← →
Megabyte © (2007-05-17 17:50) [8]
> G_M_S © (17.05.07 17:47) [7]
Не мешайте человеку учиться :)
← →
Accel (2007-05-17 18:04) [9]Про indy интересно, спасибо!
Но я пишу диплом и поэтому стараюсь всё сам делать, чем нагрузить кучу готовых компонентов, накидать на форму и радоваться.
← →
Anatoly Podgoretsky © (2007-05-17 18:44) [10]> Accel (17.05.2007 18:04:09) [9]
Тогда тебе нужен Winsock API
← →
G_M_S © (2007-05-17 19:19) [11]
> Не мешайте человеку учиться :)
Как раз надо учиться использовать готовые наработки - иначе при написании ПО легко погрязнуть в изобретении велосипеда...
← →
Accel (2007-05-17 22:27) [12]Спасибо всем за помощь!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c