美文网首页
Python中的字符串编码

Python中的字符串编码

作者: Jerry_Hao | 来源:发表于2018-01-03 10:28 被阅读38次

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'>

相关文章

网友评论

      本文标题:Python中的字符串编码

      本文链接:https://www.haomeiwen.com/subject/nffhnxtx.html