Question

J'ai un problème étrange avec lxml lorsque j'utilise la version déployée de mon application Django. J'utilise lxml pour analyser une autre page HTML que je récupère de mon serveur. Cela fonctionne parfaitement sur mon serveur de développement sur mon propre ordinateur, mais pour une raison quelconque, il me donne UnicodeDecodeError sur le serveur.

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

Je me suis assuré qu'Apache (avec mod_python) fonctionne avec LANG = 'en_US.UTF-8' .

J'ai essayé de rechercher ce problème sur Google et différentes méthodes de décodage correct de la chaîne, mais je n'arrive pas à le comprendre.

Dans votre réponse, vous pouvez supposer que ma chaîne s'appelle hello ou quelque chose du genre.

Était-ce utile?

La solution

"\ x85why allô là-bas!" n'est pas une chaîne encodée en utf-8. Vous devriez essayer de décoder la page Web avant de la transmettre à lxml. Vérifiez l’encodage utilisé en consultant les en-têtes http lorsque vous récupérez la page. Peut-être y trouverez-vous le problème.

Autres conseils

Une syntaxe telle que u "\ x85why hello there!" vous aide-t-elle?

Les ressources suivantes de la documentation officielle de Python peuvent vous être utiles:

La modification de site.py n’étant pas une solution idéale, essayez ceci au début de votre programme:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top