Кодировка документа

Для чего нужно знать кодировку

По-умолчанию, кодировка данных, полученных с сервера, определяется автоматически. Естественно, это имеет смысл только для текстовых данных. 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.

Опция задания кодировки

Вы можете принудительно задать кодировку документа (отлючив её автоматическое определение) опцией charset.