GNU/Linux >> Linux の 問題 >  >> Linux

Python 3.6 で UnicodeDecodeError を解決するには?

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 がエラーをスローする場合 次に、スタックトレースで質問を更新してください。暗黙の変換が行われている可能性があります。


Linux
  1. 方法:Pythonでのソケットプログラミング

  2. RockyLinux8にPython3.10をインストールする方法

  3. Linuxでpythonファイルを実行する方法

  1. LinuxにPythonをインストールする方法

  2. 条件付きでUTF-8に再コード化する方法は?

  3. Debian でロケールをインストール/変更するには?

  1. LinuxMint20にPythonをインストールする方法

  2. trace.py を使用して Python スクリプトをトレースする方法

  3. Python 辞書の作成方法