Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

перекодировка из UTF-8   Найти похожие ветки 

 
rizhiy87 ©   (2010-04-15 11:49) [0]

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

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


 
Palladin ©   (2010-04-15 12:11) [1]

если уже пробовал, то тогда - никак


 
Anatoly Podgoretsky ©   (2010-04-15 12:15) [2]

MultibyteToWideChar, это прямой путь, остальное делается поверх этого.


 
rizhiy87 ©   (2010-04-15 12:16) [3]

тогда существуют ли нестандартные компоненты или библиотеки для подобных задач?
Если да, то посоветуйте.
Заранее спасибо


 
Anatoly Podgoretsky ©   (2010-04-15 12:18) [4]

> rizhiy87  (15.04.2010 12:16:03)  [3]

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


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


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

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


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

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


 
Anatoly Podgoretsky ©   (2010-04-15 13:15) [7]

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

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


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


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


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


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


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


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


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

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


 
rizhiy87 ©   (2010-04-15 17:12) [9]


> уверен что там 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 получаю вышепредъявленный заголовок, а дальше
‹kϱWŸ_»üVÐólÍ7�À
-×1mÃX}AaJ# ½%ÃØÚÚÒ·æu×_7Ö®Û«€�å&#1 63;¦zêµ°


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


> s:= UTF8String(r);

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

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


 
Loginov Dmitry ©   (2010-04-15 17:19) [11]

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


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


> Content-Encoding: gzip


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


 
rizhiy87 ©   (2010-04-15 17:20) [13]

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

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


 
rizhiy87 ©   (2010-04-15 17:21) [14]


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

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


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


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


IdHTTP!


 
rizhiy87 ©   (2010-04-15 17:58) [16]

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


 
rizhiy87 ©   (2010-04-15 18:50) [17]

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


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 вывлжит нормальный заголовок, похожий на показаный выше, а вот в мемо снова
‹
что с этим  Content-Encoding: gzip делать? загвоздка ведь в нем?


 
Loginov Dmitry ©   (2010-04-15 23:22) [18]

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


 
Anatoly Podgoretsky ©   (2010-04-16 08:43) [19]

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

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


 
Loginov Dmitry ©   (2010-04-16 09:29) [20]


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


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


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


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


 
Демо ©   (2010-04-16 13:14) [21]


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


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


 
Loginov Dmitry ©   (2010-04-16 23:56) [22]


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


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


 
rizhiy87 ©   (2010-04-17 03:28) [23]

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

следующая проблема тут: :)
http://delphimaster.net/view/2-1271459822/


 
Loginov Dmitry ©   (2010-04-17 14:11) [24]


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


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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.064 c
3-1238243754
Ivan8511
2009-03-28 15:35
2010.08.27
Индексация даты в обратном порядке


2-1268835906
user99834
2010-03-17 17:25
2010.08.27
Преобразовать BMP в JPEG, сжать и записать в TMemoryStream


15-1264993584
Дмитрий С
2010-02-01 06:06
2010.08.27
html+css, margin-top в процентах.


4-1224075402
shurets
2008-10-15 16:56
2010.08.27
Создать профиль пользователя


6-1216680107
flaxe
2008-07-22 02:41
2010.08.27
Winsock HTTP Auth.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский