我有很多的中文样本,在应用jieba中文分词之后,想将分词的结果写入到txt文件中,报了如下错误:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 143: illegal multibyte sequence
于是开始了漫长的排查错误之旅:
1、我首先查看了我要写入数据的数据类型,为str
2、查看python3本身的编码方式,python3中包含decode和encode两种方式,其中decode是将其他字符转化为unicode中间类型,即:解码,而encode是将unicode类型转化为其他字符类型,即:编码。
3、于是,开始了第一次尝试:将str类型编码为utf-8类型,写入到文档中,事实证明写入是没有问题的,且写入的文件是byte型数据,如下:b'\xe5\xb0\x8a........首先这个不是我们想要的中文,只是unicode类型对象,.其次,当我试图再次读取这个文件的时候,我发现这个不可以被解码,查阅资料之后,发现是如下原因:
u ='中文' #指定字符串类型对象
str = u.encode('utf-8') #以utf-8编码对u进行编码,获得bytes类型对象
str1 = str.decode('utf-8') #如果以utf-8的编码对str进行解码得到的结果,将无法还原原来的字符串内容