Python中的字符串编码
定义字符串
Python 中存在两种编码方式的字符串:ASCII 和 Unicode。Python 2.7 默认的编码方式是 ASCII,即当直接使用''、""或者''' '''来定义字符串时,采用的是 ASCII 的编码方式。
a = 'This is an ASCII string'
Unicode 字符串的定义方式需要在前面添加u.
a = u'This is an Unicode string'
字符串编码
ASCII 编码采用一个字节对字符编码,一个字节有8个bit,可以编码 256(2^8) 个字符。这对英文字符够用,但对很多其他国家的字符集是远远不足的。所以,为了对世界上的所有字符统一进行编码,Unicode 的编码方式诞生。
Unicode 的编码方式采用更多的字节对字符编码,通常采用2个字节表示一个字符。Unicode 编码表示英文字符时,左边的字节用零填充。但是如果文本的内容全部是英文,采用2字节的 Unicode 编码方式,势必会浪费一半空间,对存储和网络传输带来负担。于是,可变长的编码方式utf-8产生。
utf-8对英文的编码方式跟 ASCII 相同,都采用一个字节。对其他的字符采用1~6个不等的字节进行编码。
现在计算机通用的字符编码的工作方式是:内存中使用 Unicode 编码,存盘或网络传输使用utf-8编码。
# coding=utf-8
a = '深圳'
print type(a)
print len(a)
print a.__sizeof__()
> <type 'str'>
> 6
> 43
b = u'深圳'
print type(b)
print len(b)
print b.__sizeof__()
> <type 'unicode'>
> 2
> 54
编码转换
Python 中将 Unicode 字符以 utf8 的方式编码:
# coding=utf-8
a = u'深圳'
b = a.encode('utf-8')
print type(b)
> <type 'str'>
Python 中将 utf8 编码的字符串解码成 Unicode 字符串:
# coding=utf-8
a = '深圳'
b = a.decode('utf-8')
print type(b)
> <type 'unicode'>
网友评论