UnicodeEncodeError:'gbk'编解码器无法在位置25编码字符'\ ue13b':非法的多字节序列

时间:2019-04-20 14:49:46

标签: python character-encoding locale

错误

 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)

3 个答案:

答案 0 :(得分:1)

将本机编码更改为utf-8

import sys
import io
sys.stdout = io.TextIOWrapper(buffer=sys.stdout.buffer,encoding='utf8')

答案 1 :(得分:0)

Python尝试打印时发生错误。打印时,即写入sys.stdout,Python使用终端期望的编码对要打印的文本进行编码。在这种情况下,系统编码为 gbk ,但是 gbk 无法编码字符串('\ue13b')中的第三个字符,因此UnicodeEncodeException被举起。

一种解决方案是在调用Python时将PYTHONIOENCODING环境变量设置为UTF-8:

PYTHONIOENCODING=utf-8 python myscript.py

如果您使用的是类似Unix的操作系统,则可以将语言环境从gbk语言环境更改为utf-8语言环境,例如从zh_CN.gbk更改为zh_CN.utf8(这会影响所有程序的方式从文件读取和写入,因此如果您有很多 gbk 编码数据,那么这可能不是一个好主意。

如果您使用的是Windows,请参阅this question的答案,以获取有关在Windows终端中使用unicode的信息。

答案 2 :(得分:0)

例如,如果它是由您使用的编辑器引起的。尝试在文件“ Python.sublime-build”中添加一行。它对我有用。

reference

enter image description here