Кодировка документа¶
Для чего нужно знать кодировку¶
По-умолчанию, кодировка данных, полученных с сервера, определяется автоматически. Естественно, это имеет смысл только для текстовых данных. Grab использует кодировку документа, чтобы:
- построить DOM-дерево документа
- получить текст документа в unicode-виде.
- провести поиск unicode-строки в документе
- преобразовать unicode-данные в байтовую строку для отправки в запросе
Оригинальное содержимое документа доступно в аттрибуте body объекта response, unicode-представление документа можно получить методом unicode_body() объекта response:
>>> g.go('http://yandex.ru')
<grab.response.Response object at 0x11bea90>
>>> type(g.response.body)
<type 'str'>
>>> type(g.response.unicode_body())
<type 'unicode'>
Алгоритм определения кодировки¶
Алгоритм определения кодировки документа проверяет несколько источников, в следующем порядке:
- мета-тэг <meta content=”Http-Equiv” >
- xml-декларация (в случае XML-документа)
- значение HTTP-заголовка “Content-Type:”
Если кодировку определить не удалось или было найдено некорректное имя кодировки, то по-умолчанию, используется кодировка UTF-8.