gpt4 book ai didi

delphi - 如何将 Indy UTF-8 响应转换为 native Delphi (Unicode) 字符串?

转载 作者:行者123 更新时间:2023-12-03 15:42:07 24 4
gpt4 key购买 nike

使用 Indy THTTP 我获得了一个具有 Content-Type: text/html; 的响应。 charset=UTF-8 并将其存储在 TStringStream 中。如果我随后使用 ReponseStream.ReadString(ResponseStream.Size),则生成的 String 将无法正确显示。我敢打赌这是因为 Windows 使用 UTF-16。

我用 TEncoding.UTF8TEncoding.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...?

最佳答案

TIdHTTP 有一个重载版本的 Get(),它返回一个字符串。它会为您将 UTF-8 解码为 UTF-16:

LResponse := LHTTP.Get('url');

关于delphi - 如何将 Indy UTF-8 响应转换为 native Delphi (Unicode) 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com