Ошибка происходит, когда Python пытается печатать. При печати, то есть записи в sys.stdout
, Python кодирует текст для печати в соответствии с кодировкой, ожидаемой терминалом. В этом случае системная кодировка gbk , но gbk не может кодировать третий символ в строке ('\ue13b'
), поэтому UnicodeEncodeException
повышается.
Одним из решений было бы установить переменную окружения PYTHONIOENCODING в UTF-8 при вызове Python:
PYTHONIOENCODING=utf-8 python myscript.py
Если вы используете Unix-подобную операционную систему, вы можете изменить свой языковой стандарт с языкового стандарта gbk на языковой стандарт utf-8, например с zh_CN.gbk
на zh_CN.utf8
(это повлияет на то, как все программы читают и пишут из файлов, так что это может быть плохой идеей, если у вас много данных, закодированных в gbk ).
Если вы используете Windows, см. Ответы на на этот вопрос для получения информации о работе с Unicode в терминале Windows.