python2和python3的编码问题

Posted 菲菲菲菲菲常新的新手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python2和python3的编码问题相关的知识,希望对你有一定的参考价值。

python2中有两种类型

str字符串和unicode字符串

python3则改成了

bytes和str字符串

在python2中‘xxx’和b‘xxx’都是str字符串,u‘xxx’是unicode字符串,即python3中的bytes在python2是不存在的,都归属于str字符串

在python3中unicode是不存在的,被归并到str字符串里面的,即‘xxx’和u‘xxx’都是str字符串,b‘xxx’是bytes

主要的原因是python2的默认编码是asscii码,而python3的默认编码是utf-8

utf-8相较于asscii能容纳更多的字符,举个例子,utf-8能正常显示中文,而asscii则不行。具体有什么差异就不详细说了。

所以在python2中如果要显示中文需要做编码处理

编码处理的一般方式是

str通过decode函数编码成unicode,然后通过encode编码成str

而python3中可以正常显示中文,不做编码处理也不会有什么大问题

随便说一下python2中str有encode和decode两个函数,encode用来将unicode编码成指定的编码,decode用来将指定编码编码成unicode

encode其实是将字符串变成bytes,因为python2没有bytes所以其还是str字符串。

python3中将bytes和str拆开了,str就只有encode函数可以使用了,使用encode变成bytes之后,bytes类型可以使用decode函数

以上是关于python2和python3的编码问题的主要内容,如果未能解决你的问题,请参考以下文章

python2和python3的编码问题

python2和python3中文和英文编码问题

python2与python3的编码问题

Python2和Python3正则匹配中文时的编码问题

python2和python3之间的字符编码兼容性

python2 与python3中最大的区别(编码问题bytes&str