GNU/Linux >> Linux Esercitazione >  >> Linux

Come risolvere UnicodeDecodeError in Python 3.6?

Ho riscontrato questo problema durante l'utilizzo di Python all'interno di un contenitore Docker basato su Ubuntu 18.04. Sembrava essere un problema locale, che è stato risolto aggiungendo quanto segue al Dockerfile:

ENV LANG C.UTF-8

Sembra che la tua localizzazione sia non funzionante e abbia un altro problema di byte->Unicode . La cosa che hai fatto per Python 2.7 è un hack che ha solo mascherato il vero problema (c'è un motivo per cui devi reload sys per farlo funzionare).

Per correggere il tuo locale, prova a digitare locale dalla riga di comando. Dovrebbe essere simile a:

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 dipende da LANG essere impostato correttamente. Python utilizza efficacemente locale per capire quale codifica usare quando si scrive su stdout. Se non riesce a risolverlo, il valore predefinito è ASCII.

Dovresti prima tentare di correggere la tua lingua. Se locale errori, assicurati di aver installato il language pack corretto per la tua regione.

Se tutto il resto fallisce, puoi sempre correggere Python impostando PYTHONIOENCODING=UTF-8 . Questo dovrebbe essere usato come ultima risorsa poiché mascherare ancora una volta i problemi.

Se Python continua a generare un errore dopo aver impostato PYTHONIOENCODING quindi aggiorna la tua domanda con lo stacktrace. È probabile che tu abbia una conversione implicita in corso.


Linux
  1. Come installare Python su Linux

  2. Come installare Python su Linux Mint 20

  3. Procedura:programmazione socket in Python

  4. Come tracciare gli script Python usando trace.py

  5. Come creare un dizionario Python

Come commentare in Python

Come installare Python 3.7 su Ubuntu 18.04

Come controllare la versione di Python

Come eseguire uno script Python in PHP

Come installare Python PIP su Ubuntu 18.04

Come usare i set in Python