我一直在编写一些通过 URL 下载指定网页源代码的函数:
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;
当我指定一个 URL 时,我可以完美地使用英文 URL 地址,在президент.рф
Indy 旁边,该 URL 转换为?????????.??
- (HTTP Analyzer 的屏幕截图)
我为我的问题找到了这个解决方案:
idHttp.IOHandler.DefStringEncoding := TEncoding.Ansi;
// also tried - TEncoding.Unicode, TEncoding.UTF8
但它不起作用 - 当我尝试调用我的函数时,出现错误:
那么,我如何强制它的功能与西里尔地址一起使用?
谢谢你。