Задать вопрос
@r10d10

Как определить кодировку страницы или текста на python?

Запрос:
requests.get("https://site.ru", headers)

к двум разным сайтам выдал разные ответы. В одном случае кириллический текст был нормальный, в другом выглядел так:
СкÑ\x83пка


Сделал string.encode('utf-8') но это не помогло и текст стал выглядеть так:
\xc3\x90\xc2\xa1\xc3\x90\xc2\xba\xc3\x91\\x83\


Формально и там и там на сайтах стоит мета-тег UTF-8 но на одном он видимо не соответствует реальной кодировке.

Тогда я посмотрел
print(string.headers)

и не увидел ничего необычного, кодировка никакая не передаётся в заголовках

{'Server': 'nginx', 'Date': 'Wed, 11 Jun 2025 11:41:21 GMT', 'Content-Type': 'text/html', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Accept-Encoding', 'Cache-Control': 'max-age=604800, public', 'Content-Encoding': 'gzip'}


Вопроса 2:
1. Какой метод определения истинной колировки веб-страницы лучше использовать
2. Можно ли перекодировать полученный текст в читаемый или всё же его изначально надо забирать правильно а с этим ничего не сделать
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 2
iglebov
@iglebov
Backend-разработчик
Похожий вопрос рассматривался здесь:
https://stackoverflow.com/questions/436220/how-to-...

Может помочь модуль chardet.

Пример работы модуля из документации:
>>> import urllib.request
>>> rawdata = urllib.request.urlopen('http://yahoo.co.jp/').read()
>>> import chardet
>>> chardet.detect(rawdata)
{'encoding': 'EUC-JP', 'confidence': 0.99}
Ответ написан
Комментировать
@r10d10 Автор вопроса
Расскажу что мне помогло.
1. Сохраняем результат в байтовом и текстовом виде в разных переменных
2. Проверяем полученный текстовый вид на любые русские буквы так a|o|е если ни одной из них нет, то у нас неправильная кодировка
3. Берём тогда вариант байтового представления из первого пункта и перекодируем bytes.decode('utf_8') кодировку надо подобрать заранее
Все кодировки доступные вот на этой странице в документации https://docs.python.org/3/library/codecs.html
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы