Тека следующих ситуаций:TIdHTTP кодировка символов ответа POST
procedure Test;
var
Response : String;
begin
Response := IdHttp.Post(MyUrL, AStream);
DoSomethingWith(Response);
end;
Теперь веб-сервер возвращает мне данные в UTF-8. Предположим, что он возвращает мне некоторый XML-код UTF-8, содержащий символ é. Если я использую переменную Response, она не содержит этого символа, но это вариант UTF-8 (# C3 # A9), поэтому Indy не расшифровал декодирование?
Теперь я знаю, как решить эту проблему:
procedure Test;
var
Response : String;
begin
Response := UTF8ToString(IdHttp.Post(MyUrL, AStream));
DoSomethingWith(Response);
end;
Один нюанс с этим решением: Delphi вызывает предупреждение W1058 (неявный строковый бросок с потенциальной потери данных из «строка» до «RawByteString»)
Мой вопрос: это правильный способ справиться с этой проблемой или я могу дать указание TIdHTTP сделать преобразование в UnicodeString для меня?
Привет, Реми, спасибо за ваш четкий ответ. После проверки заголовка ответа HTTP я увидел, что Charset не указан, поэтому в моем случае это было # 3b. – whosrdaddy