Ubuntu 18.04 に基づく Docker コンテナー内で Python を使用すると、この問題が発生しました。これはロケールの問題のようで、Dockerfile に以下を追加することで解決されました:
ENV LANG C.UTF-8
ロケールが壊れているようです 別のバイト->Unicode の問題があります .あなたが Python 2.7 に対して行ったことは、本当の問題を覆い隠しただけのハックです (reload sys
しなければならない理由があります)。 それを機能させるために)
ロケールを修正するには、locale
と入力してみてください コマンドラインから。次のようになります:
LANG=en_GB.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_ALL=
locale
LANG
に依存 適切に設定されています。 Python は効果的に locale
を使用します stdout に書き込むときに使用するエンコーディングを決定します。解決できない場合は、デフォルトで ASCII になります。
まずロケールの修正を試みてください。 locale
の場合 お住まいの地域に適した言語パックがインストールされていることを確認してください。
他のすべてが失敗した場合は、PYTHONIOENCODING=UTF-8
を設定することでいつでも Python を修正できます .これは、問題を再び隠すことになるため、最後の手段として使用する必要があります。
PYTHONIOENCODING
を設定した後も Python がエラーをスローする場合 次に、スタックトレースで質問を更新してください。暗黙の変換が行われている可能性があります。