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.