Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top