Decodificando problemas em Django e lxml
Pergunta
Eu tenho um problema estranho com lxml ao usar a versão implantada do meu aplicativo Django. Eu uso lxml para analisar outra página HTML que eu vou buscar do meu servidor. Isso funciona perfeitamente bem no meu servidor de desenvolvimento no meu próprio computador, mas por algum motivo ele me dá UnicodeDecodeError
no servidor.
('utf8', "\x85why hello there!", 0, 1, 'unexpected code byte')
Eu tenho a certeza que o Apache (com mod_python) é executado com LANG='en_US.UTF-8'
.
Eu tentei googling para este problema e tentou diferentes abordagens para decodificar a seqüência corretamente, mas eu não consigo descobrir isso.
Na sua resposta, você pode assumir que a minha string é chamado hello
ou algo assim.
Solução
"\ x85why Olá lá!" não é uma string codificado utf-8. Você deve tentar decodificar a página da Web antes de passá-lo para lxml. Verifique qual codificação que utiliza, olhando para o http cabeçalhos quando você buscar a página talvez você encontrar o problema lá.
Outras dicas
não sintaxe como u"\x85why hello there!"
ajuda?
Você pode encontrar os seguintes recursos da documentação oficial do Python útil:
Desde modificar site.py não é uma solução ideal tentar fazer isso no início do seu programa:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")