Python
两个版本中字符串的区别
Python2
到
python3
版本一个最大的最明显的区别就是
python3
支持中文了,
对于
python2
经常遇到到那些坑人的编码问题来说,
这一个大的改变是非常值个
肯定的。而这基本的数据类型字符串在
3
版本中究竟做了什么样的改变呢?
首先我们来先说下
python2
的情况,
python2
使用的是
ASCII
码编码的,
所以
默认是不支持中文的,
程序中有中文都不能正常的保存。
但是可以在开头加上这
句
# -*- coding:utf-8 -*-
来设置程序的编码就可以了,当使用
输出中文时又
发现有些能正常输出有些却是乱码,
这时只要将不能正常输出的中文字符串前面
加上
’
u
’
字母就可以了。到这里就已经引出了
python2
中的两种字符串类型,
str
和
unicode
,可以简单的理解为
str
是机器能识别的字符串,而
unicode
是我们能
看懂的字符串,
str
可以解码
(
decode
)
成
unicode
,
unicode
可以编码
(
encode
)
成
str
。在
idle
的
shell
中中文会成
’
gbk
’
的编码,用什么编码就得用什么解码。
例,在
python2
中:
>>> a =
'
中文
'
>>> a
'\xd6\xd0\xce\xc4'
>>> b = u'
中文
'
>>> b
u'\u4e2d\u6587'
>>> a.decode('gbk')
u'\u4e2d\u6587'
>>> b.encode('gbk')
'\xd6\xd0\xce\xc4'
>>>
在
python3
中使用的就是
unicode
国际编码,
utf-8
是
unicode
编码的一种形
式,是支持中文的。
Python3
中的字符串有两种,
str
和
bytes
,这里
str
其实就是
python2
中的
unicode
,而
bytes
是
python2
中的
str
。所以这里的
str
可以编码
(
encode
)成
bytes
,
bytes
可以解码(
decode
)成
str
。
例,在
python3
中: