Djangoおよびlxmlのデコードの問題
質問
Djangoアプリケーションのデプロイされたバージョンを使用すると、lxmlに奇妙な問題があります。 lxmlを使用して、サーバーから取得した別のHTMLページを解析します。これは自分のコンピューター上の開発サーバーでは完全に機能しますが、何らかの理由でサーバー上で UnicodeDecodeError
が発生します。
('utf8', "\x85why hello there!", 0, 1, 'unexpected code byte')
Apache(mod_pythonを使用)が LANG = 'en_US.UTF-8'
で実行されることを確認しました。
この問題をグーグルで試し、文字列を正しくデコードするさまざまな方法を試しましたが、わかりません。
あなたの答えでは、私の文字列は hello
または何かと呼ばれていると仮定できます。
解決
" \ x85なぜそこにこんにちは!" utf-8でエンコードされた文字列ではありません。 Webページをlxmlに渡す前に、Webページのデコードを試行する必要があります。ページをフェッチするときにhttpヘッダーを見て、使用しているエンコードを確認してください。問題がある可能性があります。
他のヒント
u" \ x85why hello there!"
などの構文は役に立ちませんか?
公式のPythonドキュメントから次のリソースが役立つ場合があります。
site.pyの変更は理想的な解決策ではないため、プログラムの最初にこれを試してください:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
所属していません StackOverflow