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函数