参照文【https://blog.csdn.net/Dillon2015/article/details/53204955】的说法,
第一个错
- 【UnicodeEncodeError:'gbk' codec can't encode character 'xa9' in position 0:illegal multibyte sequence】
- 这个错误,网上给出的解释是:
- 某些软件如notepad,在保存一个以UTF-8编码的文件时, 会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。
- 因此我们在读取时需要自己去掉这些字符,python中的codecs module定义了这个常量:
-
1 import io 2 import sys 3 #这里判断下,把三个不可见的字符去除掉 4 if data[:3] == codecs.BOM_UTF8: 5 data = data[3:] 6 print(data.decode('utf-8'))
第二个错
- 【UnicodeEncodeError:'gbk' codec can't encode character 'xa0' in position 0:illegal multibyte sequence】
- 看完贴子【https://blog.csdn.net/jim7424994/article/details/22675759#】
- 后,才知道,原来是python的print()方法的问题。
- 在python中, print()方法在Win7的默认编码是gbk,它在打印时,并不是所有的字符都支持的。
- 而且这个问题一般也就是在cmd中才会有。 在cmd中是改变标准输出编码:
1 import os,sys,io 2 sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
使用上面这两句即可解决在CMD模式下运行出错的状态
编码名称 | 用途 |
---|---|
utf8 | 所有语言 |
gbk | 简体中文 |
gb2312 | 简体中文 |
gb18030 | 简体中文 |
big5 | 繁体中文 |
big5hkscs | 繁体中文 |