[python错误]UnicodeDecodeError: 'gbk' codec can't decode byte...

出现此错误的原因是使用'gbk'解码时报错,存在一些字符不能使用gbk来解码。

 

首先,简体中文字符编码(ASCII扩展字符集)有下列几种:GB2312、GBK、GB18030。

GB2312: 中国国家标准总局在1980年发布的《信息交换用汉字编码字符集》,共收入汉字6763个和非汉字图形字符682个。

GBK:中国国家标准总局在1995年发布了《汉字编码扩展规范》(GBK)。GBK与GB 2312—1980国家标准所对应的内码标准兼容,同时在字汇一级支持ISO/IEC10646—1和GB 13000—1的全部中、日、韩(CJK)汉字,共计20902字。

GB18030: 有两个版本:GB18030-2000和GB18030-2005。GB18030-2000是GBK的取代版本,它的主要特点是在GBK基础上增加了CJK统一汉字扩充A的汉字。GB18030-2005的主要特点是在GB18030-2000基础上增加了CJK统一汉字扩充B的汉字。

其中GB18030兼容GBK和GB2312编码,在处理简体中文的时候,可以统一使用GB18030来读取GBK或者GB2312的文档。

 

在编写python脚本处理简体中文文档时,可以使用下面的方式来读取文档:

如使用:open('abc.txt', encoding= 'gb18030') 来读取文档。当遇到“GB18030”也无法编码的字符时,上面的代码会报错。可以尝试使用下面的代码来解决:

open('abc.txt', encoding= 'gb18030', error= 'ignore')

 

含编码检测及简体中文字符处理的完整例子:

CSV文件分割与列异常处理的python脚本

 

posted @ 2018-01-09 18:53  逍客1  阅读(12318)  评论(0编辑  收藏  举报