delphi - TIdHttp.Post - 无法获取 utf-8 编码

标签 delphi delphi-xe2 indy

如何强制 TIdHttp.post 方法返回以 utf-8 编码的网页?我尝试了 http.Request.ContentEncoding := 'UTF-8' 但它不起作用。这是我的代码:

procedure TeUpdateNews.Check;
var url: string;
    Http: TIdHttp;
    SS: TStringStream;
    param: TStringList;
    SWIDESTRING: WideString;
begin
  http := TIDHttp.Create(nil);
  http.HandleRedirects := true;
  http.ReadTimeout := 5000;
  http.Request.ContentEncoding := 'UTF-8';

  param := TStringList.create;
  param.Clear;

  url := CONST_SOME_WWW;

  try
    SS := TStringStream.Create;
    try
      SWIDESTRING := http.Post(url, param);

       // it's not getting utf-8!
       ShowMessage(SWIDESTRING); 
    finally
      SS.Free;
      param.free;
    end;
  finally
    Http.Free;
  end;
end;

最佳答案

好吧,我发现我做错了什么。万一有人会搜索:

您需要在构造函数中设置 TStringStream 编码,因此应该如下所示:

try
  // this is it :-)
  SS := TStringStream.Create('', TEncoding.UTF8);
  try
    // using overloaded post method this time
    // it writes return in the ss stream
    http.Post(url, param, ss);

     // now it's getting utf-8, baby!
     ShowMessage(ss.DataString); 

关于delphi - TIdHttp.Post - 无法获取 utf-8 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13000321/

相关文章:

delphi - 如何选择Delphi 2007的迁移路径

德尔福XE2 : What is the purpose of IMPLICITBUILDING directive found in package

delphi - Android 上的 TWebBroker + Indy

Delphi 2009,Indy 10,TIdTCPServer.OnExecute,如何抓取InputBuffer中的所有字节

delphi - 如何使 Windows 按钮表现为网站按钮

delphi - Delphi XE3 DllMain 中的 ShowMessage

delphi - 获取另一个进程的过程/函数地址

android - 不使用实时绑定(bind)以编程方式构建 TListView

delphi - 列出实现接口(interface)的类的所有属性

Delphi XE2 Datasnap session 管理 - 页面重新加载后获取 session 信息