Запрашивает извлекает кодировку из заголовка Content-Type ответа. Если в заголовке кодировка не найдена, то свойство apparent_encoding
ответа оценивается и используется как значение r.encoding
.
apparent_encoding
определяется с помощью chardet библиотека для угадывания кодировки тела ответа.
В случае URL-адреса в вопросе кодировка объявляется в заголовке Content-Type
>>> r.headers['Content-Type']
'text/html; charset=gbk'
, поэтомуr.apparent_encoding
не оценивается до тех пор, пока к нему не будет получен явный доступ путем выполнения print(r.apparent_encoding)
.
В этом конкретном случае, кажется, chardet ошибается: текстовый атрибут ответа может быть закодирован с помощью кодека gbk, но не с помощьюGB2312.