Получить Indy Multi Charset - PullRequest
       9

Получить Indy Multi Charset

0 голосов
/ 16 октября 2018

Несколько дней назад я переписал вопрос о «Delphi & Indy & utf8», которому вы помогаете мне разрешить кодировку, кодифицированную в utf8, но иногда та же самая процедура используется для доступа к другим www с другой кодировкой.

процедура такова (в delphi xe6):

var
  Web: TIdHTTP;
  ASito  : AnsiString;
  TStr   : TStringStream;
  hIOHand: TIdSSLIOHandlerSocketOpenSSL;
begin

  try
    Web := TIdHTTP.Create(nil);
    TStr := TStringStream.Create('',TEncoding.UTF8);
    hIOHand := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    hIOHand.SSLOptions.SSLVersions := [sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2,sslvSSLv23];
    Web.IOHandler := hIOHand;

    Web.Request.UserAgent := INET_USERAGENT;       //Custom user agent string
    Web.RedirectMaximum := INET_REDIRECT_MAX;      //Maximum redirects
    Web.HandleRedirects := INET_REDIRECT_MAX <> 0; //Handle redirects
    Web.ReadTimeOut := INET_TIMEOUT_SECS * 1000;   //Read timeout msec
    Web.ConnectTimeout := INET_TIMEOUT_SECS div 2 * 1000;

    try
      Web.Get(FUrl,TStr);
      Sito := TStr.DataString;
    except
      on e : exception do
        Sito := 'ERR: ' +FUrl+#32+e.Message;
    end
  finally
    EndTime := Now;
    TStr.Free;
    Web.Free;
    hIOHand.Free;
  end;

Какой метод используется для определения кода кодировки на любой странице www?Некоторые страницы, к которым я обращаюсь, находятся в json (и в этом случае я должен использовать utf8).Я пробовал больше вариантов ... но я не могу найти правильное решение.

Спасибо за помощь!

...