Как конвертировать текст в UTF-8 Delphi - PullRequest
0 голосов
/ 12 июня 2011

У меня есть функция, которая возвращает HTML-страницу из Интернета, но символы кириллицы отображаются с некоторыми другими неизвестными символами.Как я могу преобразовать текст и увидеть нормальные символы кириллицы?

Я с Delphi 2009 и использую indy для отправки HTTP-запроса и получения ответа от сервера.(я думаю, у меня есть indy9)

Вот так я беру HTML-страницу

http := TIDHttp.Create(nil);
http.HandleRedirects := true;
http.ReadTimeout := 5000; 
http.Request.ContentType:='multipart/form-data'; 
param:=TIdMultiPartFormDataStream.Create;
param.AddFormField('subcat_id','501');
param.AddFormField('reg_id','1');
text:=http.Post('example.com',param);

Я не знаю, есть ли у indy какие-либо функции, которые получают страницу с любым юникодом.

Ответы [ 3 ]

0 голосов
/ 13 июня 2011

Кажется, ваш заголовок вопроса не синхронизирован с телом вопроса. Предполагая, что вы хотите декодировать HTML-страницу в кодировке UTF-8, ваш друг - функция UTF8Decode. Противоположная операция сделана UTF8Encode. Эти функции были доступны еще в Delphi 7 (поправьте меня, если D6 тоже подходит). Ознакомьтесь с разделом «См. Также» в статье, здесь также есть точки входа для обработки буфера.

0 голосов
/ 14 июня 2011

Indy 9 не поддерживает Delphi 2009. Убедитесь, что вы используете последнюю версию Indy 10. В Indy 10 версия TIdHTTP.Post()TIdHTTP.Get()), которая возвращает String, автоматически декодирует данные в Unicode, используя любую кодировку, указанную сервером, либо в заголовке HTTP Content-Type, либо <meta> тег внутри самого HTML.

0 голосов
/ 12 июня 2011

Вы не предоставили достаточно информации, но я постараюсь предложить следующее: если возможно, загрузите данные в Stream, а затем создайте StringList и загрузите его так:

var
  MS:TMemoryStream;
  SL: TStringList;
(...)
begin
  MS:=TMemoryStream.Create;
  SL:=TStringList.Create;
  // Load your string to MS
  SL.LoadFromStream(MS, TEncoding.UTF8);
  (...)
  MS.Free;
  SL.Free;
end;

Прокомментируйте, если есть проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...