采取以下情况:
procedure Test;
var
Response : String;
begin
Response := IdHttp.Post(MyUrL, AStream);
DoSomethingWith(Response);
end;
现在网络服务器以 UTF-8 格式向我返回数据。假设它返回一些包含字符é的 UTF-8 XML 。如果我使用变量 Response 它不包含此字符,但它是 UTF-8 变体 (#C3#A9),所以 Indy 没有解码?
现在我知道如何解决这个问题:
procedure Test;
var
Response : String;
begin
Response := UTF8ToString(IdHttp.Post(MyUrL, AStream));
DoSomethingWith(Response);
end;
此解决方案的一个警告:Delphi 引发警告 W1058(隐式字符串转换,潜在数据丢失从 'string' 到 'RawByteString')
我的问题:这是处理这个问题的正确方法还是我可以指示 TIdHTTP 为我转换为 UnicodeString?