python字符编码的表示

1
Python 的浮点数也没有大小限制,但是超出一定范围就直接表示为 `inf` (无限大)。

  • 一个字节有8位(bit)表示最大整数是255
  • 两个字节最大表示整数65535
  • 4个字节最大表示4294967295
  • ASCII编码中每一个字符使用一个字节,
  • Unicode编码每一个字符使用2个字节,
  • 这样如果文本使用全部英文表示,就比较浪费内存,所以推出UTF-8编码,英文字符使用一个字节,中文字符使用3个字节,偏僻的生字使用4-6个字节,
  • 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就会转换为utf-8编码
    对于单个字符的编码,Python供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
1
2
print(ord('人生苦短'))
print(chr(12002))
如果要在网络上传输,或者保存到磁盘上,就需要把 str 变为以字节为单位的 bytes
1
2
print('abc'.encode('ascii'))
print('人生苦短'.encode('utf-8'))
这样表示会报错,因为汉字在ASCII中没有编码
1
# print('人生苦短'.encode('ascii'))
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把 bytes 变为 str,就需要用 decode()方法:
1
2
print(b'abc'.decode('ascii'))
print(b'\xe9\x83\xad\xe5\x81\xa5\xe8\xb1\xaa'.decode('utf-8'))