标签:
以Unicode表示的str
通过encode()
方法可以编码为指定的bytes
,例如:
>>> ‘ABC‘.encode(‘ascii‘) b‘ABC‘ >>> ‘中文‘.encode(‘utf-8‘) b‘\xe4\xb8\xad\xe6\x96\x87‘ >>> ‘中文‘.encode(‘ascii‘) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-1: ordinal not in range(128)
以其中\xe4为例,0xe4对应十进制数位228,对应二进制为1110 0100,八位一个字节。即encode让变量一个字节一个字节的显示。
我们从网络或磁盘上读取字节流,读到的数据就是bytes。 然后要把bytes转换为str。
>>> b‘ABC‘.decode(‘ascii‘) ‘ABC‘ >>> b‘\xe4\xb8\xad\xe6\x96\x87‘.decode(‘utf-8‘) ‘中文‘
关于encode、decode以及什么时候是unicode,什么时候是ascii、utf-8,可以这么理解:在内存里是str,是unicode,是字母是中文等。在传输时,是bytes,是作为字母的bytes(因为一个字母占一个字节,一个\xe4也是一个字节),是十六进制表示的bytes。
占位符:%d→整数 %s→字符串 %f→浮点数 %x→十六进制整数
标签:
原文地址:http://www.cnblogs.com/inspiring26/p/5822371.html