UnicodeEncodeError: кодек «gbk» не может кодировать символ «\ ue13b» в позиции 25: недопустимая многобайтовая последовательность - PullRequest
0 голосов
/ 20 апреля 2019

Ошибка :

 UnicodeEncodeError: 'gbk' codec can't encode character '\ue13b' in position 25: illegal multibyte sequence

Формат кодировки файла - utf-8, и в файле есть нераспознанное слово, когда он читается. «左足  趾 麻木»

Код

for line in open(label_filepath, encoding='utf-8'):
    print(line)

1 Ответ

0 голосов
/ 21 апреля 2019

Ошибка происходит, когда 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.

...