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.