python2 与 python3 字符编码问题

总所周知,程序中所有的字符串语言都将转化为二进制存储,那么一定会遇到编码的问题,不同的语言有不同的编码。

每个语种都有自己的编码格式,例如英语用ASCII码,但是大多数国家文字很多超过了ASCII码的编码范围,比如中文有gbk编码格式等等。

为了将所有编码格式统一成一个全球编码标准,就产生了unicode编码。


python2中 将unicode和其他编码进行了区分,也就是说python2中的字符串要么是u'中国'这样的unicode编码,要么是指定编码格式的str类型

python2

str: 'utf-8' 'gbk'

unicode

这样就会出现一种常见问题,例如:

当2个编码方式不同的字符串合并的时候,"中国" + "zg",python2在处理的过程中分别将这2个字符串转换为unicode进行统一,但是python并不知道原来的"中国"是以utf-8还是gbk编码,那么都会按照ASCII码转成unicode,但"ASCII"码中没有“中国”这2个字符的编码,因此会遇到一个错误:ASCII cannot decode \xxx\xxx

要解决这个问题,就是在"中国"前加个u,让它成为unicode编码格式


python3将python2的这个问题解决了,统一都用unicode编码

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容