Как определить charset пейджи если он не указан или не верен
Господа! Как пример, можно посмотреть сюда https://www.pravda.com.ua/news/2021/01/16/7280136/. Тут на станице не указан charset. Он указан в хидере QNetworkRequest::KnownHeaders::ContentTypeHeader как UTF8(кодировка не верная). Если использовать QTextCodec::codecForHtml возвращается Latin1. Если вытащить заголовок из метаданных и использовать QTextCodec::fromUtfText - результат такой-же. Если пытаться перебрать все доступные кодеки из QTextCodec и проверять, можно ли конвертировать текст, то
QTextCodec скажет, что можно конвертировать как минимум 10 кодировок, хотя мы же понимаем что заголовок, как и другой текст, скорее всего, написан в кодировке Windows-1251. Отсюда вопрос: как найти верную кодировку текста пейджи, если не указан charsetили он не верный?
Ответы (1 шт):
Если мы знаем язык страницы, конвертим (чем получится) из разных кодировок в какую-то одну (utf8 сойдет), а потом проверяем частоту встречаемости букв - если она совпадет с типичной частотой для русского языка - мы угадали.
Фактически, это эквивалентно криптоанализу шифра простой замены.