如何将文本转换为UTF-8 Delphi

时间:2011-06-12 16:25:40

标签: delphi text utf-8

我有一个从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的页面。

3 个答案:

答案 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标记。