Ich habe ein seltsames Problem mit Lxml, wenn ich die implementierte Version meiner Django-Anwendung verwende. Ich benutze lxml, um eine andere HTML-Seite zu analysieren, die ich von meinem Server hole. Dies funktioniert einwandfrei auf meinem Entwicklungsserver auf meinem eigenen Computer, aber aus irgendeinem Grund gibt es mir UnicodeDecodeError
auf dem Server.Dekodierungsprobleme in Django und Lxml
('utf8', "\x85why hello there!", 0, 1, 'unexpected code byte')
Ich habe dafür gesorgt, dass Apache (mit mod_python) mit LANG='en_US.UTF-8'
läuft.
Ich habe versucht, für dieses Problem googeln und versuchte verschiedene Ansätze zur Entschlüsselung der Zeichenfolge richtig, aber ich kann es nicht herausfinden.
In Ihrer Antwort können Sie annehmen, dass meine Zeichenfolge hello
oder so genannt wird.
Einverstanden. Probiere "\ x85why hallo da!". Decode ("utf-8"). Dadurch wird der Nicht-Unicode-Code (\ x85) in einen Unicode-Code umgewandelt. Sie müssen möglicherweise auch hinzufügen: "# - * - Codierung: UTF-8 - * -" (ohne Anführungszeichen) an den Anfang Ihrer .py-Datei. – landyman
Ich stimme zu, dass dies wahrscheinlich dadurch verursacht wird, dass Sie eine Byte-Zeichenfolge zurückgeben, die tatsächlich nicht utf-8 ist. Im Allgemeinen sollten Sie, wenn Sie behaupten, eine UTF-8-Zeichenfolge zu erstellen, intern den Unicode-Typ verwenden und kurz vor dem Einfügen von Bits in die Leitung utf-8 codieren. Wenn Sie Byte-Strings zusammenfassen, werden Sie wahrscheinlich irgendwo etwas vermasseln und es dann viel später irgendwo entdecken. FWIW, "\ x85" == "#". –