Конференция "Сети" » Как применить TEncoding.UTF8 вместе с TIdHTTP?
 
  • Pcrepair © (19.03.12 22:18) [0]
    Добрый день. Есть модуль на базе TIdHTTP (ИНДИ10 + РАД2010), вводим запрос в кирилице, нажимаем кнопочку и получаем ответ от яндекса.

    /////////////////////////////////////////////////////
       function URLEncode(const Url: Utf8String): string;
    ///////////////////////////////////////////
    var
     Form1: TForm1;
    implementation
    {$R *.dfm}
    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 или как то там в автомате идет перекодировка. Никто не в курсе?

  • Cobalt © (20.03.12 21:20) [1]
    TIdURI
 
Конференция "Сети" » Как применить TEncoding.UTF8 вместе с TIdHTTP?
Есть новые Нет новых   [134435   +13][b:0][p:0.001]