Главная страница
    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.059 c
2-1273755318
_guest_
2010-05-13 16:55
2010.08.27
впечатать содержимое RichEdit в произвольное место листа


15-1273069213
zedart
2010-05-05 18:20
2010.08.27
описание перменных


15-1274862307
xayam
2010-05-26 12:25
2010.08.27
Антикомпьютерный контроль (АКК)


15-1275560855
Kerk
2010-06-03 14:27
2010.08.27
В России стартует эксперимент по имитации полета на Марс


2-1269172946
Первокурсница
2010-03-21 15:02
2010.08.27
Программа вылетает (delphi 7), свойство кнопки Enabled или Visibl





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский