Delphi: изменить запрос кодировки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Giggles, 13 Dec 2010.

  1. Giggles

    Giggles New Member

    Joined:
    17 Jul 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Есть программа которая отправляет запрос на сайт
    ww.site.com/search/?search=текст запроса
    запрос идёт в кодировке UTF-8,а на сайте стоит windows-1251
    и получается крякозябла типо скайлайн
    можно ли как нибудь изменить запрос кодировки?
     
  2. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    Reputations:
    2
    ansitoutf8, utf8toansi

    upd: мля, наверное всётаки я написал херню, т.к. толком и не понял что нужно :(
     
    #2 1n0y, 13 Dec 2010
    Last edited: 13 Dec 2010
  3. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Какая версия дельфи?

    Это надо сразу указывать! :mad:
    upd: также надо сразу указывать инструментарий для работы с сетью
     
    #3 GhostOnline, 13 Dec 2010
    Last edited: 13 Dec 2010
  4. Giggles

    Giggles New Member

    Joined:
    17 Jul 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    пишу программу поисковик на delphi 7
    после ввода текста идёт обычный редирект на
    http://yandex.ru/yandsearch?text=
     
  5. 0pTik

    0pTik Banned

    Joined:
    18 Jul 2010
    Messages:
    240
    Likes Received:
    85
    Reputations:
    17
    Нужно кодировать текст в URL кодировку , гугли
     
  6. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Вопрос не раскрыт:
    Что используется для отправки/получения?
    И заголовки запроса и ответа приведите.
     
  7. dedicOK

    dedicOK New Member

    Joined:
    6 Dec 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    была когда то подобная проблема из за того что выводил результат в мемо а он не принимает кодировку,если выводить в мемо ,то удали его и поставь ричедит за место его ,он вроде нормик принимает кодировку;)
     
  8. Giggles

    Giggles New Member

    Joined:
    17 Jul 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    исходник программы
    http://narod.ru/disk/1389106001/search.rar.html
     
  9. 0pTik

    0pTik Banned

    Joined:
    18 Jul 2010
    Messages:
    240
    Likes Received:
    85
    Reputations:
    17
    Повторяю еще раз
    Википедия рулит ;)
     
  10. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    UrlEncode штоле?
    http://www.delphisources.ru/pages/faq/base/encode_url.html
     
  11. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Так у него отправляется неправильно или принимается??
    Проект не качал, ибо не***.
    И просил заголовки из сниффера а не исходники.
    И насколько я помню если он использует инди то она автоматом кодирует в урл.
     
  12. 0pTik

    0pTik Banned

    Joined:
    18 Jul 2010
    Messages:
    240
    Likes Received:
    85
    Reputations:
    17
    Он использует не Инди , он вызывает через ShellExecute
    P.S инди не кодирует в URLEncode
     
  13. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Ты хорошо подумал прежде чем спорить со мной?
    Не поленился покопался нашел исходники инди и замутил такой код:
    PHP:
    procedure TForm1.Button1Click(SenderTObject);
    var
      
    sTStringList;
    begin
      s 
    := TStringList.Create;
      
    s.Add('1=ыыы');
      
    s.Add('2=ололо');
      
    with TIdHTTP.Create(nil) do
        try
          
    Post('http://www.google.ru/'s);
        finally
          
    Free;
        
    end;
      
    s.Free;
    end;
    И вот что получил:

    [​IMG]


    [​IMG]
     
  14. Giggles

    Giggles New Member

    Joined:
    17 Jul 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    http://www.delphisources.ru/pages/faq/base/encode_url.html
    перечитал несколько раз,так и не понял что куда
     
  15. 0pTik

    0pTik Banned

    Joined:
    18 Jul 2010
    Messages:
    240
    Likes Received:
    85
    Reputations:
    17

    Я не много не о том ,речь шла не о пост а гет запросе , я имел в виду ,то что при гет запросе, любое слово на русском , не будет кодироваться в url encode

    PS И да кстати твой пример будет работать до 2009 , 2010 версии , я так понимаю ты делал в 7 делфи
     
  16. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Зависит не от версии дельфи а от версии инди скорее.
    Делал в 2010. Версии раньше 2009 вообще никогда не юзал.
    Я почему то думал что раз пост кодируется то и гет тоже. Проверить даже не подумал.

    А тс непробиваемый. Даже с примером разобраться не может.
     
  17. 0pTik

    0pTik Banned

    Joined:
    18 Jul 2010
    Messages:
    240
    Likes Received:
    85
    Reputations:
    17
    Да ты абсолютно прав , именно от версии Indy .

    ТС Тут где то выкладывал Rudi код , URL Encod'а на C++, поищи
     
  18. Giggles

    Giggles New Member

    Joined:
    17 Jul 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    а зачем мне под C++?
     
  19. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    Совместимость c Delphi 2009+, в 7 не проверял.
    Code:
    function 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;
    
    Code:
    ShowMessage(URLEncode('тест test 123'));
    Результат: [B]%D1%82%D0%B5%D1%81%D1%82%20test%20123[/B]