Форум: "Сети";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
ВнизPost/get неверная кодировка Найти похожие ветки
← →
Encore (2009-10-27 13:49) [0]
var
авторизация проходит на 5+, получаю нужную мне страницу, перемещаю ее код в мемо, а там каракули вместо русских сиволов..
params,responseres:tstringlist;
s:string;
begin
params:=TStringList.Create;
responseres:=TStringList.Create;
try
params.Add("Login=мойлогин");
params.Add("Domain=мойдомен");
params.Add("Password=мойпас");
responseres.Text:=idhttp1.Post("http://win.mail.ru/cgi-bin/auth",params);
finally
params.free;
responseres.free;
s:=idhttp1.get("http://my.mail.ru/мойдомен/мойпас");
memo1.Lines.Add(s);
подскажите где поправить кодировку, ах и еще на 7 дельф была проблема с куками но аналогичный код возвращал нормальную кодировку, это началось прослеживаться только в 2009той
← →
Медвежонок Пятачок © (2009-10-27 14:02) [1]подскажите где поправить кодировку
в программе разумеется, где же еще.
после получения контента.
← →
Encore (2009-10-27 14:09) [2]В веб браузере? каким образом? дописать мета тэг в шапке? он у меня постом уже кривые символы получает
← →
Encore (2009-10-27 14:10) [3]оговорился Get"ом получает кривые символы)
← →
Сергей М. © (2009-10-27 14:22) [4]Это что за выкрутасы ?
try
..
Post // <-- метод возбудил исключение по причине, например, нештатного разрыва соединения с сервером
..
finally
..
Get // <-- а нам по барабану разрыв соединения ! Все равно лезем на сервер
..
end
← →
Anatoly Podgoretsky © (2009-10-27 14:37) [5]В 2009 string = UnicodeString
← →
Encore (2009-10-27 15:09) [6]я просто отрывками код выписывал, не туда строчечку в форуме запихнул) но это не то поле:) подскажите как решить тот вопрос что В 2009 string = UnicodeString
← →
Encore (2009-10-27 15:16) [7]http://edn.embarcadero.com/ru/article/38582 помогла статья. разобрался:)
← →
Anatoly Podgoretsky © (2009-10-27 15:20) [8]Трудно сказать, поскольку idhttp1.get уже объявлен как String, а должен быть RawByteString, можно попробовать привести к RawByteString, может получится, ну и конечно не ясно, что дальше делать, ведь для мемо нужен Юникод, а решить какая кодировка у страницы не всегда возможно. В общем сначала попробуй
s: AnsiString{(N)};
s := RawByteString(idhttp1.get("http://my.mail.ru/мойдомен/мойпас"));
И зачем в программе responseres, если оно не используется.
← →
Encore (2009-10-27 15:28) [9]это отрывок кода...используется. нет не получилось:( страницы всегда в вин-1251
← →
Encore (2009-10-27 15:30) [10]я совсем запутался:(
← →
Anatoly Podgoretsky © (2009-10-27 15:31) [11]Значит не судьба, Инди он попорченый в 2009, точнее он попорченый по жизни и много раньше. Смени компонент на что ни будь другое.
← →
Anatoly Podgoretsky © (2009-10-27 15:43) [12]
> я совсем запутался:(
Сейчас распутаем.
В далекие, далекие времена - Борланд, известный халявшик, вместо написания своих Интернет компонент, в очередной раз решил их сменить на очередную халяву, в качестве халявы достался Инди, остальные отказали Борланду, но Инди был написан криворуко, не переносимо и вот настал очередной северный пушистый лисиц - Борланд наконец перешел на Юникод (2009) и вместо того чтобы адаптировать Инди, оставил все как есть, а у тех функции тоже были объявлены STRING!!! и вот и приплыли, не все конечно, англоязычные не пострадали, в отличии от кирилицы.
← →
Anatoly Podgoretsky © (2009-10-27 15:44) [13]Не так давно эту тему обсуждали, не помню нашли ли обходную дорогу
← →
Медвежонок Пятачок © (2009-10-27 18:31) [14]В веб браузере?
Вроде по-русски написали. В программе. В своей.
← →
Encore (2009-10-28 02:04) [15]Медвежонок Пятачок- я думаю вас стоит задуматься о своих ответах. собственно нужны ли они вообще?
Anatoly Podgoretsky вам я очень очень благодарен.!!!спасибо большое, ябуду пробывать, если что нибудь получится отпишусь в теме
← →
Сергей (2010-08-16 15:18) [16]Удалено модератором
Примечание: Создай свою тему
← →
Дмитрий Белькевич (2010-08-17 12:22) [17]Не так давно правил IdCustomHTTPServer.pas. Тоже были проблемы с кодировкой.
Долго искал концы, вылечилось так:
procedure TIdHTTPRequestInfo.DecodeAndSetParams(const AValue: String);
var
i, j : Integer;
s: string;
begin
// Convert special characters
// ampersand "&" separates values {Do not Localize}
// TODO: need to decode UTF-8 octets...
Params.BeginUpdate;
try
Params.Clear;
i := 1;
while i <= Length(AValue) do
begin
j := i;
while (j <= Length(AValue)) and (AValue[j] <> "&") do {do not localize}
begin
Inc(j);
end;
s := Copy(AValue, i, j-i);
// See RFC 1866 section 8.2.1. TP
s := StringReplace(s, "+", " ", [rfReplaceAll]); {do not localize}
Params.Add(TIdURI.URLDecode(s));
i := j + 1;
end;
finally
Params.EndUpdate;
end;
end;
Params.Add(TIdURI.URLDecode(s, TIdTextEncoding.Default));
В другом месте, для того, что бы русский текст запихнуть в сеть:
FClient.IOHandler.Write(MSG_START + FOwner.FCurrSendStr + MSG_END, TIdTextEncoding.Default);
Без "TIdTextEncoding.Default" запихивались "????????".
Если не лень - смотри, где инди косячит в своих потрохах.
← →
Anatoly Podgoretsky © (2010-08-18 10:59) [18]> Дмитрий Белькевич (17.08.2010 12:22:17) [17]
Ты не мог бы предложить, что ни будь менее болезненое.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.052 c