在Python中,对文本文件进行操作时,一不小心就会遇到编码问题
出错示例:
1.UnicodeEncodeError: ‘gbk’ codec can’t encode character.
2.UnicodeEncodeError: ‘gb2312’ codec can’t encode character.
3.UnicodeEncodeError: ‘UTF-8’ codec can’t encode character
为了避免再遇到此类问题,现在来探究下gb2312,gbk与gb18030间的关系
基础知识:
1. 编码集关系: gb2312﹤gbk﹤gb18030
2. gb2312字符: 哈哈哈我去你大爷的
3. gbk字符: 妳爺愛情國家
4. gb18030字符: āōáóǎēǒǎɑ
结论一
在Windows中,以gb2312 gbk gb18030编码存储的文件,会被映射到gb2312
就是说, 以gbk/gb2312保存的文本,程序读取该文本时, 仍会认为编码是gb2312
验证:
编写程序, 依次创建gb2312 gbk gb18030 utf-8编码的文本, 然后尝试依次写入gb2312字符 gbk字符 gb18030字符, 最后依次检测其编码
import chardet
# 创建各种编码文本