GNU/Linux >> Znalost Linux >  >> Linux

Jak vyřešit UnicodeDecodeError v Pythonu 3.6?

Tento problém jsem měl při používání Pythonu v kontejneru Docker založeném na Ubuntu 18.04. Zdálo se, že jde o problém s místním nastavením, který byl vyřešen přidáním následujícího do souboru Dockerfile:

ENV LANG C.UTF-8

Zdá se, že vaše národní prostředí je poškozené a má další bajty->Problém s kódováním Unicode . Věc, kterou jste udělali pro Python 2.7, je hack, který pouze maskoval skutečný problém (existuje důvod, proč musíte reload sys aby to fungovalo).

Chcete-li opravit své národní prostředí, zkuste zadat locale z příkazového řádku. Mělo by to vypadat nějak takto:

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 závisí na LANG být správně nastaven. Python efektivně používá locale zjistit, jaké kódování použít při zápisu do stdout. Pokud to nezvládne, použije se jako výchozí ASCII.

Nejprve byste se měli pokusit opravit své národní prostředí. Pokud locale chyby, ujistěte se, že jste nainstalovali správný jazykový balíček pro vaši oblast.

Pokud vše ostatní selže, vždy můžete Python opravit nastavením PYTHONIOENCODING=UTF-8 . Toto by mělo být použito jako poslední možnost, protože budete znovu maskovat problémy.

Pokud Python po nastavení PYTHONIOENCODING stále hází chybu pak prosím aktualizujte svou otázku pomocí stacktrace. Je pravděpodobné, že probíhá předpokládaná konverze.


Linux
  1. Jak vytvořit slovník Python

  2. Jak spustit soubor python v linuxu

  3. Jak nainstalovat/změnit národní prostředí na Debianu?

  1. Jak nainstalovat Python na Linux

  2. Jak nainstalovat Python na Linux Mint 20

  3. Jak na to:Programování soketů v Pythonu

  1. Jak nainstalovat Python 3.10 na Rocky Linux 8

  2. Jak trasovat Python skripty pomocí trace.py

  3. Jak podmíněně překódovat do UTF-8?