在python中unicode中的type为str,gbk/utf-8的类型为byte,如下图
unicode,utf-8,gbk之间的转换,需要先转为unicode
核心是不管怎么转都要先转换成unicode,因此需要解码decode先。utf-8 <---> unicode <---> gbk
转换例子:
s=u'小明'
#编码为utf-8
s_utf = s.encode('utf-8')
#变为为gbk,先解码为unicode,再编码
s_gbk = s_utf.decode('utf-8').encode('gbk')
结果如下图所示,utf-8一个中文占3个字节,gbk两个字节
2.解决error:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 0
Python 编码中编码解码的问题,我这个错误就是‘utf-8’不能解码位置0的那个字节(0xa1),也就是这个字节超出了utf-8的表示范围了
解决办法:
stopwords = pd.read_csv("stopwords.txt",index_col=False,quoting=3,sep=" ",names=['stopword'],encoding='gb18030')
也就是在读取数据的时候,显式添加编码方式encoding='gb18030'