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编码

上一篇下一篇

猜你喜欢

热点阅读