Kodowanie znaków TIdHTTP odpowiedzi POST
Podejmij następującą sytuację:
procedure Test;
var
Response : String;
begin
Response := IdHttp.Post(MyUrL, AStream);
DoSomethingWith(Response);
end;
Teraz serwer zwraca dane w UTF-8. Załóżmy, że zwróci mi trochę XML UTF-8 zawierającego znaké. Jeśli użyję zmiennej Response, nie zawiera ona tego znaku, ale jest to wariant UTF-8 (# C3 # A9), więc Indy nie dekodował?
Teraz wiem, jak rozwiązać ten problem:
procedure Test;
var
Response : String;
begin
Response := UTF8ToString(IdHttp.Post(MyUrL, AStream));
DoSomethingWith(Response);
end;
Jedno zastrzeżenie z tym rozwiązaniem: Delphi wywołuje ostrzeżenie W1058 (Niejawny rzut łańcuchowy z potencjalną utratą danych z „string” na „RawByteString”)
Moje pytanie: czy jest to właściwy sposób na rozwiązanie tego problemu, czy mogę polecić TIdHTTP wykonanie konwersji na UnicodeString dla mnie?