Текущий архив: 2010.08.27;
Скачать: CL | DM;
Внизперекодировка из 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Ö®Û«€�å 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;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.064 c