Я пишу какую-то функцию, которая загружает исходный код из указанного веб-страницы по адресу:Delphi. Инди и кириллические буквы
function GetWebPage(const url: string): tStringList;
var
idHttp: TidHttp;
begin
Result := tStringList.Create;
idHttp := TidHttp.Create(nil);
// set params
idHttp.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)';
idHttp.Request.AcceptLanguage := 'ru en';
idHttp.Response.KeepAlive := True;
idHttp.HandleRedirects := True;
idHttp.ConnectTimeout := 5000;
idHttp.ReadTimeout := 5000;
try
try
Result.values['responce'] := idHttp.Get(url);
except
Result.values['responce'] := '';
end;
finally
Result.values['code'] := IntToStr(idHttp.ResponseCode);
FreeAndNil(idHttp);
end;
I'ts отлично работает с английскими адресами URL, когда я указать URL, как президент.рф
, ИСИДЕ Инди, что URL преобразуется в ?????????.??
- (экранное изображение HTTP Analyzer)
Я нашел решение для моей проблемы:
idHttp.IOHandler.DefStringEncoding := TEncoding.Ansi;
// also tried - TEncoding.Unicode, TEncoding.UTF8
Но это не работает - когда я пытаюсь вызвать мою функцию, я получаю сообщение об ошибке:
Итак, как я могу заставить свою функцию для работы с кириллическими адресами?
спасибо.
Вау, действительно исторический пользовательский агент ... Но в любом случае, какую версию Delphi вы используете? Не могли бы вы добавить правильный тег в свой вопрос? – TLama
Я использую Delphi XE3 :) –
Нарушение доступа означает, что вы получаете доступ к недопустимой памяти. Вы работаете внутри отладчика, так что пусть он покажет вам, что именно происходит с кодом. –