Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.01.15;
Скачать: CL | DM;

Вниз

Post/get неверная кодировка   Найти похожие ветки 

 
Encore   (2009-10-27 13:49) [0]

var
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);
авторизация проходит на 5+, получаю нужную мне страницу, перемещаю ее код в мемо, а там каракули вместо русских сиволов..
подскажите где поправить кодировку, ах и еще на 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
15-1456319592
Копир
2016-02-24 16:13
2017.01.15
Порой опять гармонией упьюсь, Над вымыслом слезами обольюсь...


15-1451823438
Сергей
2016-01-03 15:17
2017.01.15
Выбор версии Delphi


2-1421218510
Drowsy
2015-01-14 09:55
2017.01.15
Нужен компонент типа PaintBox.


15-1454424089
JohnKorsh
2016-02-02 17:41
2017.01.15
Установка Embarcadero XE7


2-1419963322
AlexeyTG
2014-12-30 21:15
2017.01.15
Чтение из HKEY_LOCAL_MACHINE правильно ли реализовано