使用 Indy THTTP
,我获得了一个响应Content-Type: text/html; charset=UTF-8
并将其存储在TStringStream
. 如果我然后使用ReponseStream.ReadString(ResponseStream.Size)
,结果String
将无法正确显示。我敢打赌这是因为 Windows 使用 UTF-16。
我尝试了一些东西,TEncoding.UTF8
结果TEncoding.Convert
只会更糟(开始看起来像中国人)。
这是当前代码:
var
LHTTP: TIdHTTP;
LResponseStream: TStringStream;
LResponse: String;
begin
LResponseStream := TStringStream.Create();
try
LHTTP := TIdHTTP.Create(nil);
try
LHTTP.Get('url', LResponseStream); // Returns 'hęllo'
finally
LHTTP.Free;
end;
LResponseStream.Position := 0;
LResponse := LResponseStream.ReadString(LResponseStream.Size);
ShowMessage(LResponse); // Make me pretty
finally
LResponseStream.Free;
end;
end;
我应该改变什么才能获得常规的 Delphi String
...?