Domanda

Ho uno strano problema con lxml quando utilizzo la versione distribuita della mia applicazione Django. Uso lxml per analizzare un'altra pagina HTML che ottengo dal mio server. Funziona perfettamente sul mio server di sviluppo sul mio computer, ma per qualche ragione mi dà UnicodeDecodeError sul server.

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

Ho fatto in modo che Apache (con mod_python) funzioni con LANG = 'en_US.UTF-8' .

Ho provato a cercare su Google questo problema e ho provato diversi approcci per decodificare correttamente la stringa, ma non riesco a capirlo.

Nella tua risposta, puoi presumere che la mia stringa si chiama ciao o qualcosa del genere.

È stato utile?

Soluzione

" \ x85perché ciao lì! " non è una stringa codificata utf-8. Dovresti provare a decodificare la pagina web prima di passarla a lxml. Controlla quale codifica utilizza guardando le intestazioni http quando recuperi la pagina, forse trovi il problema lì.

Altri suggerimenti

La sintassi come u " \ x85perché ciao lì! " aiuta?

Potresti trovare utili le seguenti risorse dalla documentazione ufficiale di Python:

Poiché la modifica di site.py non è una soluzione ideale, provare questo all'inizio del programma:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top