Добрый день. Есть модуль на базе TIdHTTP (ИНДИ10 + РАД2010), вводим запрос в кирилице, нажимаем кнопочку и получаем ответ от яндекса.
function URLEncode(const Url: Utf8String): string;
var
Form1: TForm1;
implementation
const
strSearch = 'http://yandex.ru/yandsearch?text=';
procedure TForm1.Button1Click(Sender: TObject);
var
mStream: TStringStream;
T : TStringList;
URL : string;
Search : string;
begin
mStream := TStringStream.Create;
T := TstringList.Create;
Search := URLEncode(Edit1.Text);
URL := strSearch + Search + '&lr=35';
idHttp1 := TIdHTTP.Create(nil);
try
idHttp1.Request.UserAgent := 'Opera/9.50 (Windows NT 5.1; U; MRA 5.6 (build 03278); ru)';
idHttp1.Get(URL, mStream);
T.Text := UTF8ToString(mStream.DataString);
Memo1.Lines := T;
finally
mStream.Free;
URL := '';
T.Free;
end;
end;
function TForm1.URLEncode(const Url: Utf8String): string;
var
I: Integer;
begin
Result := '';
for I := 1 to Length(Url) do
begin
if CharInSet(Url[I], ['A'..'Z', 'a'..'z', '0'..'9', '-', '=', '&', ':', '/', '?', ';', '_']) then
Result := Result + Utf8ToAnsi(Url[I])
else
Result := Result + '%' + IntToHex(Ord(Url[I]), 2);
end;
end;
end.
Все работает, но хорошо бы обойтись без function TForm1.URLEncode(const Url: Utf8String): string;, если это возможно. Вроде есть в ИНДИ10 что то типа TEncoding.UTF8 или как то там в автомате идет перекодировка. Никто не в курсе?