GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengatasi UnicodeDecodeError di Python 3.6?

Saya mengalami masalah ini saat menggunakan Python di dalam wadah Docker berdasarkan Ubuntu 18.04. Tampaknya menjadi masalah lokal, yang diselesaikan dengan menambahkan yang berikut ke Dockerfile:

ENV LANG C.UTF-8

Sepertinya lokal Anda rusak dan memiliki masalah byte lain->Unicode . Hal yang Anda lakukan untuk Python 2.7 adalah peretasan yang hanya menutupi masalah sebenarnya (ada alasan mengapa Anda harus reload sys untuk membuatnya bekerja).

Untuk memperbaiki lokal Anda, coba ketikkan locale dari baris perintah. Seharusnya terlihat seperti:

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 tergantung pada LANG sedang diatur dengan benar. Python secara efektif menggunakan locale untuk mengetahui penyandian apa yang akan digunakan saat menulis ke stdout. Jika tidak berhasil, standarnya adalah ASCII.

Pertama-tama Anda harus mencoba memperbaiki lokal Anda. Jika locale kesalahan, pastikan Anda telah menginstal paket bahasa yang benar untuk wilayah Anda.

Jika semuanya gagal, Anda selalu dapat memperbaiki Python dengan menyetel PYTHONIOENCODING=UTF-8 . Ini harus digunakan sebagai upaya terakhir karena Anda akan menutupi masalah sekali lagi.

Jika Python masih membuat kesalahan setelah menyetel PYTHONIOENCODING lalu harap perbarui pertanyaan Anda dengan stacktrace. Kemungkinan Anda sedang mengalami konversi tersirat.


Linux
  1. Cara menginstal Python di Linux

  2. Cara Melacak Skrip Python menggunakan trace.py

  3. Cara mengeksekusi file python di linux

  1. Cara menginstal Python di Linux Mint 20

  2. Cara:Pemrograman Socket dengan Python

  3. Cara Menginstal Python 3.10 di Rocky Linux 8

  1. Cara membuat Kamus Python

  2. Bagaimana cara mengkode ulang ke UTF-8 secara kondisional?

  3. Bagaimana cara menginstal/mengubah lokal di Debian?