IndyTHTTPを使用して、 を持つ応答を取得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ですか?