python2 与 python3 字符编码问题
2020-03-05 本文已影响0人
如果仲有听日
总所周知,程序中所有的字符串语言都将转化为二进制存储,那么一定会遇到编码的问题,不同的语言有不同的编码。
每个语种都有自己的编码格式,例如英语用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编码