-
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той
-
подскажите где поправить кодировку
в программе разумеется, где же еще. после получения контента.
-
В веб браузере? каким образом? дописать мета тэг в шапке? он у меня постом уже кривые символы получает
-
оговорился Get'ом получает кривые символы)
-
Это что за выкрутасы ?
try .. Post // <-- метод возбудил исключение по причине, например, нештатного разрыва соединения с сервером .. finally .. Get // <-- а нам по барабану разрыв соединения ! Все равно лезем на сервер .. end
-
В 2009 string = UnicodeString
-
я просто отрывками код выписывал, не туда строчечку в форуме запихнул) но это не то поле:) подскажите как решить тот вопрос что В 2009 string = UnicodeString
-
-
Трудно сказать, поскольку idhttp1.get уже объявлен как String, а должен быть RawByteString, можно попробовать привести к RawByteString, может получится, ну и конечно не ясно, что дальше делать, ведь для мемо нужен Юникод, а решить какая кодировка у страницы не всегда возможно. В общем сначала попробуй s: AnsiString;
s := RawByteString(idhttp1.get('http://my.mail.ru/мойдомен/мойпас')); И зачем в программе responseres, если оно не используется.
-
это отрывок кода...используется. нет не получилось:( страницы всегда в вин-1251
-
я совсем запутался:(
-
Значит не судьба, Инди он попорченый в 2009, точнее он попорченый по жизни и много раньше. Смени компонент на что ни будь другое.
-
> я совсем запутался:(
Сейчас распутаем.
В далекие, далекие времена - Борланд, известный халявшик, вместо написания своих Интернет компонент, в очередной раз решил их сменить на очередную халяву, в качестве халявы достался Инди, остальные отказали Борланду, но Инди был написан криворуко, не переносимо и вот настал очередной северный пушистый лисиц - Борланд наконец перешел на Юникод (2009) и вместо того чтобы адаптировать Инди, оставил все как есть, а у тех функции тоже были объявлены STRING!!! и вот и приплыли, не все конечно, англоязычные не пострадали, в отличии от кирилицы.
-
Не так давно эту тему обсуждали, не помню нашли ли обходную дорогу
-
В веб браузере?
Вроде по-русски написали. В программе. В своей.
-
Медвежонок Пятачок- я думаю вас стоит задуматься о своих ответах. собственно нужны ли они вообще? Anatoly Podgoretsky вам я очень очень благодарен.!!!спасибо большое, ябуду пробывать, если что нибудь получится отпишусь в теме
-
Удалено модератором Примечание: Создай свою тему
-
Не так давно правил IdCustomHTTPServer.pas. Тоже были проблемы с кодировкой. Долго искал концы, вылечилось так:
procedure TIdHTTPRequestInfo.DecodeAndSetParams(const AValue: String);
var
i, j : Integer;
s: string;
begin
Params.BeginUpdate;
try
Params.Clear;
i := 1;
while i <= Length(AValue) do
begin
j := i;
while (j <= Length(AValue)) and (AValue[j] <> '&') do
begin
Inc(j);
end;
s := Copy(AValue, i, j-i);
s := StringReplace(s, '+', ' ', [rfReplaceAll]);
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' запихивались '????????'. Если не лень - смотри, где инди косячит в своих потрохах.
-
> Дмитрий Белькевич (17.08.2010 12:22:17) [17]
Ты не мог бы предложить, что ни будь менее болезненое.
|