Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перекодировка из UTF-8 [D7, WinXP]


Страницы:   1 2

rizhiy87 ©   (2010-04-15 11:49:00) 

Пишу программу для отправки и получения HTML-пакетов с веб-сервера.

Проблема с приемеом. Заголовок принимается нормально, а вот сам текст ответа - в UTF-8 иероглифами.
Как распознать эту кодировку в делфи 7 для отображения и дальнейшей обработки?
UtfEncode и UTF8ToAnsi пробовал - возвращают пустую строку.


Loginov Dmitry   (2010-04-17 14:11:00) [1]


> проблема решилась простым
> Accept-Encoding: text/html


Абалдеть! Обычно для этих целей используют Accept: text/html


rizhiy87   (2010-04-17 03:28:00) [2]

проблема решилась простым
Accept-Encoding: text/html
=)) Спасибо всем откликувшимся...

следующая проблема тут: :)
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1271459822&n=18


Loginov Dmitry   (2010-04-16 23:56:00) [3]


>
> Указывать в запросе серверу, что не надо сжимать данные.
>


Если не указывать Accept-Encoding: gzip, то сервак и не должен ничего сжимать, имхо.


Демо   (2010-04-16 13:14:00) [4]


> что с этим  Content-Encoding: gzip делать? загвоздка ведь
> в нем?


Указывать в запросе серверу, что не надо сжимать данные.


Loginov Dmitry   (2010-04-16 09:29:00) [5]


> А пользователей никто не спрашивает, в веб строение каждый
> сам себе Наполеон


Наверно сейчас все браузеры поддерживают gzip, поэтому сайтостроители и не заморачиваются простейшей проверкой...


> Content-Encoding: gzip делать? загвоздка ведь в нем?


В D7 распаковка gzip видимо не поддерживается.
Зато в D2007 есть специальный компонент TIdCompressorZLibEx. Он свое дело делает.


Anatoly Podgoretsky   (2010-04-16 08:43:00) [6]

> Loginov Dmitry  (15.04.2010 23:22:18)  [18]

А пользователей никто не спрашивает, в веб строение каждый сам себе Наполеон


Loginov Dmitry   (2010-04-15 23:22:00) [7]

Кстати, а что за сервак такой странный? Упорно отвечает Content-Encoding: gzip, хотя его об этом никто не просит.


rizhiy87   (2010-04-15 18:50:00) [8]

вот.. По тому, что нашел в Интернет по поводу Инди, наваял функию


procedure TForm1.Button1Click(Sender: TObject);
var
 Data  : TStringList;
 StrPage, UserID,  UserName  :  String;
 i : integer;
begin
 try
   Data := TStringList.Create;
   Http.AllowCookies := true;
   Http.HandleRedirects := true;

   Data.Add('login[name]=' + Edit1.Text);
   Data.Add('login[pass]=' + Edit2.Text);
   StrPage := Http.Post(' http://myhost/', Data);
 finally
   showmessage(http.Response.RawHeaders.GetText)
 end;

 Memo1.Lines.Text := StrPage;
end;


showmessge вывлжит нормальный заголовок, похожий на показаный выше, а вот в мемо снова
\x1F‹\x8
что с этим  Content-Encoding: gzip делать? загвоздка ведь в нем?


rizhiy87   (2010-04-15 17:58:00) [9]

спасибо буду ковырять в эту сторону...


Loginov Dmitry   (2010-04-15 17:30:00) [10]


> Оп! А отсюда поподробнее)


IdHTTP!


rizhiy87   (2010-04-15 17:21:00) [11]


> А разархивировать кто будет?

Оп! А отсюда поподробнее)


rizhiy87   (2010-04-15 17:20:00) [12]

Ф
> наверху написал что использовал функции, соврал получается.
> ..

нее.. я их использовал.. это уже код, исправленый в соответчтвии с советамми.


Loginov Dmitry   (2010-04-15 17:20:00) [13]


> Content-Encoding: gzip


А разархивировать кто будет?


Loginov Dmitry   (2010-04-15 17:19:00) [14]

Не проще ли использовать компонент IdHTTP?


Palladin   (2010-04-15 17:18:00) [15]


> s:= UTF8String(r);

UTF8String это тип, а не функция, в этом месте ты всего лишь привел тип, никак не конвертируя

и ведь самое главное наверху написал что использовал функции, соврал получается... а нам тут сидеть гадать... как всегда, короче


rizhiy87   (2010-04-15 17:12:00) [16]


> уверен что там UTF8, а не КОИ-8?


Заголовок ответа:
HTTP/1.1 200 OK
Date: Thu, 15 Apr 2010 13:03:22 GMT
Server: Apache/2.2.12 (Ubuntu)
X-Powered-By: PHP/5.2.10-2ubuntu6.4
15-Apr-2010 15:03:22 GMT; path=/
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5444
Connection: close
Content-Type: text/html; charset=utf-8

Так что вроде как именно UTF-8

уточню кусочек кода обработчика кнопки на всякий случай:

 TcpClient1.Open;
 TcpClient1.Sendln(s,'');
 r:=TcpClient1.Receiveln('');
 s:= UTF8String(r);
 memo2.Text:=s;
 TcpClient1.Close;


в memo2 получаю вышепредъявленный заголовок, а дальше
\x1F‹\x8kϱWŸ_»ü\x1BVÐólÍ7�À
-×1mÃX}AaJ#\xC½%ÃØÚÚÒ·æu×_7Ö®\x18Û\x8«€�å 63;\x16¦zêµ°


Loginov Dmitry   (2010-04-15 17:12:00) [17]


> Как распознать эту кодировку в делфи 7


А зачем ее распазновывать, WEB-сервер ее в заголовке указывает.


> для отображения


TWebBrowser должен без проблем отобразить, в любой кодировке.


>  и дальнейшей обработки?


Обрабатывать в формате WideString.
Для конвертации использовать UTF8ToAnsi рискованно,
есть много символов, которые не имеют аналогов в Ansi.

P.S. Я бы не стал мучаться, установил бы Delphi 2010


Anatoly Podgoretsky   (2010-04-15 13:15:00) [18]

> Плохиш  (15.04.2010 12:38:05)  [5]

Только большинство из них работоспособны в узких рамках.


han_malign   (2010-04-15 13:05:00) [19]

а s1:= UTF8String(s) пробовал?
уверен что там UTF8, а не КОИ-8?


Плохиш   (2010-04-15 12:38:00) [20]


> Нафигу нужные сурогаты, когда есть стандартные пути и библиотеки?
> Что же вас так тянет на велосипеды?

Со стандартными надо разбираться, мозга напрягать, а не стандартные здесь нахаляву разработают...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо