TIdHttp.Post - can't get utf-8 encoding

 ̄綄美尐妖づ 提交于 2019-12-04 07:51:50

Ok, I found what i've done wrong. In case anybody would search:

You need to set the TStringStream encoding in constructor, so it should be like:

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); 
user2211164
var

  ds: TIdMultipartFormDataStream;

begin

  ds := TIdMultipartFormDataStream.Create;

  try

    ds.AddFormField('test', UTF8Encode('äöüß'), 'utf-8').ContentTransfer := '8bit';

    try

      ShowMessage(HTTP.Post('http://mysite.net/test.php', ds));

    except

    end;

  finally

    FreeAndNil(ds);

  end;

end;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!