我有一个从Internet返回HTML页面的函数,但是Cyrillic符号与其他一些未知字符一起显示。 如何转换文本并能够看到正常的西里尔符号?
我使用Delphi 2009并使用indy发送HTTP请求并从服务器获取响应。 (我想我有indy9)
这就是我采用HTML页面的方式
http := TIDHttp.Create(nil);
http.HandleRedirects := true;
http.ReadTimeout := 5000;
http.Request.ContentType:='multipart/form-data';
param:=TIdMultiPartFormDataStream.Create;
param.AddFormField('subcat_id','501');
param.AddFormField('reg_id','1');
text:=http.Post('example.com',param);
我不知道indy是否有任何函数可以获取带有任何unicode的页面。
答案 0 :(得分:0)
您没有提供足够的信息,但我会尝试建议:如果可能,请在Stream中加载数据,然后创建一个StringList并加载它:
var
MS:TMemoryStream;
SL: TStringList;
(...)
begin
MS:=TMemoryStream.Create;
SL:=TStringList.Create;
// Load your string to MS
SL.LoadFromStream(MS, TEncoding.UTF8);
(...)
MS.Free;
SL.Free;
end;
评论是否存在问题。
答案 1 :(得分:0)
您的问题标题似乎与问题正文不同步。假设你想要解码 UTF-8编码的HTML页面,你的朋友就是函数UTF8Decode
。由UTF8Encode
完成的相反操作。早在Delphi 7中就可以使用这些功能(如果D6也适用,请更正)。退房"另见"文章的一节,还有缓冲处理入口点,以便更方便。
答案 2 :(得分:0)
Indy 9不支持Delphi 2009.请确保您使用的是最新版本的Indy 10。在Indy 10中,返回TIdHTTP.Post()
的{{1}}(和TIdHTTP.Get()
)版本将使用HTTP {{中的服务器指定的任何字符集自动将数据解码为Unicode。 1}}标题,或HTML本身内的String
标记。