我已经写了一些功能,通过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;
I'ts英语URL不会忽略完美的工作,当我指定像президент.рф
,iside一个网址印地那URL转变为?????????.??
- (HTTP分析仪的屏幕截图)
我发现这个解决我的问题:
idHttp.IOHandler.DefStringEncoding := TEncoding.Ansi;
// also tried - TEncoding.Unicode, TEncoding.UTF8
但它不工作 - 当我尝试打电话给我的功能,我得到错误:
所以,我怎么能强迫其功能与西里尔不会忽略工作?
谢谢。
哇,真正的历史用户代理...但无论如何,您使用的是哪个版本的Delphi?你可以在你的问题中加入适当的标签吗? – TLama
我正在使用Delphi XE3 :) –
访问冲突意味着您正在访问无效内存。你在调试器内部运行,所以让它告诉你到底什么代码失败了。 –