Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка в indy 10.5.8.0, проблемы с кодировкой 
:(
    Опции темы
c0der
Дата 11.8.2011, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 14.11.2010

Репутация: нет
Всего: нет



Здравствуйте.
У меня к Вам все тот же злобный вопрос про кодировку в Indy 10.
Дело в том что когда я отправляю GET запрос, в ответ мне приходит вместо русских символов -- '?????'

Как это исправить?

Перепробовал уйму способов, но ничего не получилось, может кто-то решил эту проблему?

Delphi 7 - Indy 10.5.8.0

Простой запрос вида:
Код

procedure TForm1.Button1Click(Sender: TObject);

var
HTTP:TIdHTTP;
SSL:TIdSSLIOHandlerSocketOpenSSL;
html:String;
   PostResult:TStringList;
begin
    PostResult:=TStringList.Create;
    HTTP:=TIdHTTP.Create(Self);
    SSL:=TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);
    HTTP.IOHandler:= SSL;
    HTTP.AllowCookies :=True;
    HTTP.HandleRedirects:=False;
    Http.Request.AcceptCharSet:='utf-8;q=0.7,*;q=0.7';
   PostResult.Text:=idHTTP1.Get('https://damagelab.org/');
   html:=UTF8Encode(PostResult.Text); //пробую перекодировать в утф8, но бесполезно
   ShowMessage(html);
end;

PM MAIL   Вверх
drkot
Дата 11.8.2011, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 0
Всего: 8



сохрани полученный поток в файл и покажи.

Добавлено через 21 секунду
или сам посмотри на кодировку и все станет понятно


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
c0der
Дата 12.8.2011, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 14.11.2010

Репутация: нет
Всего: нет



Если ты имеешь ввиду ответ от сервера то я получаю вот что:

Код

<html>
<head> 
<title>DaMaGeLaB </title> 
<meta HTTP-EQUIV="Content-Type" Content="text-html; charset=windows-1251" />
<meta name="keywords" content="?????, ?????????, ??????, ??????, ????, ????, ????????????????. ??????????, ???????, ??????? ????????????">
<META NAME="Description" CONTENT="?????????, ??????, ???, ????, ???????, ????, ????????, ?????? ? ??????, ddos">
<link href="http://damagelab.org/rss.php" rel="alternate" title="DaMaGeLaB Posts" type="application/rss+xml">
<link rel="stylesheet" content="text/css" href="/style_images/css_default.css">
<link rel="stylesheet" content="text/css" href="/nod/style.css">
<link rel="stylesheet" content="text/css" href="/style_images/iconize.css">
<link rel="stylesheet" content="text/css" href="/style_images/DLIndex.css">

................ 
 
</body> 
</html>




Это сообщение отредактировал(а) c0der - 12.8.2011, 07:33
PM MAIL   Вверх
Akella
Дата 13.8.2011, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Ты запрашивает данные у сервера в юникоде
Цитата(c0der @  11.8.2011,  20:37 Найти цитируемый пост)
Http.Request.AcceptCharSet:='utf-8;q=0.7,*;q=0.7';



а на самом деле сайт сделан с использованием win1251
Цитата(c0der @  12.8.2011,  07:32 Найти цитируемый пост)
<meta HTTP-EQUIV="Content-Type" Content="text-html; charset=windows-1251" />


PM MAIL   Вверх
c0der
Дата 16.8.2011, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 14.11.2010

Репутация: нет
Всего: нет



Но если я запрашиваю данные в кодировке виндовс-1251, то приходят кракозябры, в этом то и вопрос? как быть...? smile 
PM MAIL   Вверх
Akella
  Дата 23.8.2011, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Код

function HttpGetUrl(url: string; idHttp: TIdHttp): string;
var
  M: TStringStream;
begin
  M := TStringStream.Create('');

  try
      IdHTTP.Get(url, m);

      if IdHTTP.ResponseCode = 502 then
        begin
          result := 'Ошибка 502. ' + url;
          freeandnil(m);
          exit;
        end;

  except
      on e: exception do
        begin
          result := 'Ошибка *HttpGetUrl*. ' + url;
          if Assigned(m) then freeandnil(m);
        end;
  end;// try except

    result := m.DataString;
    freeandnil(m);
end;


Сохрани в текстовый файл m.DataString, что получится
но учти, никаких UTF8Encode
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1133 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.