Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > IdHTTP проблема с получением кириллицы


Автор: dredei 28.12.2011, 15:11
Получаю исходный код с помощью IdHTTP.Get, но кириллица выглядит так "Ïàíåëü óïðàâëåíèÿ".
Как лечить? smile

Автор: Mifody 28.12.2011, 15:30
1. посмотреть в какой кодировке приходит страница
2. попробовать UTF8ToAnsii
3. попробовать другие конвертеры кодировки

Автор: dredei 28.12.2011, 15:44
Цитата(Mifody @ 28.12.2011,  15:30)
1. посмотреть в какой кодировке приходит страница
2. попробовать UTF8ToAnsii
3. попробовать другие конвертеры кодировки

1. Лиса говорит, что cp1251.
2. Пробовал, толку ноль (ибо cp1251).
3. Какие?

Автор: Mifody 29.12.2011, 08:38
ссылочку на сайт можно?

Автор: Akella 30.12.2011, 14:48
Цитата(dredei @  28.12.2011,  15:44 Найти цитируемый пост)
1. Лиса говорит, что cp1251.


а на самом деле?

Автор: dredei 30.12.2011, 20:33
В общем, решил проблему. Исходный код получал так:
Код

Memo.Lines.Append(IdHTTP1.Get(Url));

ща получаю вот так:
Код

T:=TStringlist.Create;
M:=TMemoryStream.Create;
IdHTTP.Get(url,M);
M.Seek(0, soFromBeginning);
T.LoadFromStream(M);

и все нормально.
П.С. Сорри за беспокойство.

Автор: prot0type 8.1.2012, 03:17
кому нужно юзайте мой универсальный код

для тех у кого проблема с кодировкой в IdHTTP

и раздавайте этот код другим чтобы не парили мозги

Код

var
dump:TStream;
dump_txt:TStringList;
get_txt,get_url:string;

///////////////////////////////////////
    dump_txt:=TStringList.Create;
    dump:=TMemoryStream.Create;

      get_url:='http://google.ru/';
      if Pos('http://',get_url)<>1 then
      begin
        get_url:='http://'+get_url;
      end;

    try
      IdHTTP1.Get(get_url,dump);
    except
      ShowMessage('Сервер не отвечает, может отключен интернет? Перезапустите программу.');
      close;
      exit;
    end;

    dump.Seek(0, soFromBeginning);

    dump_txt.LoadFromStream(dump);
    dump.Free;

    if Pos('1251',IdHTTP1.Response.ContentType)<>0 then
    begin
      get_txt:=dump_txt.Text;
    end
    else
    begin

        if Pos('charset=windows-1251',dump_txt.Text)<>0 then
        begin
          get_txt:=dump_txt.Text;
        end
        else
        begin
          get_txt:=Utf8ToAnsi(dump_txt.Text);
        end;

    end;

    dump_txt.Free;

Memo1.text:=get_txt;
///////////////////////////////////////


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)