Проблемы с декодированием в Django и lxml - PullRequest
3 голосов
/ 30 апреля 2009

У меня странная проблема с lxml при использовании развернутой версии моего приложения Django. Я использую lxml для анализа другой HTML-страницы, которую я получаю с моего сервера. Это прекрасно работает на моем сервере разработки на моем собственном компьютере, но по какой-то причине дает мне UnicodeDecodeError на сервере.

('utf8', "\x85why hello there!", 0, 1, 'unexpected code byte')

Я убедился, что Apache (с mod_python) работает с LANG='en_US.UTF-8'.

Я пробовал поискать в Google эту проблему и пробовал разные подходы к правильному декодированию строки, но не могу понять.

В своем ответе вы можете предположить, что моя строка называется hello или что-то в этом роде.

Ответы [ 3 ]

3 голосов
/ 03 мая 2009

"\ x85 почему привет!" не является строкой в ​​кодировке utf-8. Вы должны попытаться расшифровать веб-страницу, прежде чем передавать ее в lxml. Проверьте, какую кодировку он использует, посмотрев заголовки http, когда вы выбираете страницу, возможно, вы найдете там проблему.

0 голосов
/ 14 мая 2009

Не помогает ли синтаксис, такой как u"\x85why hello there!"?

Вы можете найти полезными следующие ресурсы из официальной документации Python:

0 голосов
/ 30 апреля 2009

Поскольку изменение site.py не является идеальным решением, попробуйте это в начале вашей программы:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
...