Python 编码详细介绍

ascii:字母、数字、特殊字符

  • A:0100 0001
  • B:0100 0010

unicode:万国码,包含世界上所有的文字

  • 创建之初
    • A:0000 0000 0100 0001
    • 中:0100 1110 0010 1101
  • 升级
    • A:0000 0000 0000 0000 0000 0000 0100 0001 (32位)
    • 中:0000 0000 0000 0000 0100 1110 0010 1101
    • 资源浪费

对 unicode 升级:utf-8

  • A:0100 0001 (8位)
  • 欧:0000 0010 0100 0001 (16位)
  • 中:1110 0100 1011 1000 1010 1101 (24位)

gb2312:国标,包含字母、数字、特殊字符、中文

  • A:0100 0001
  • 中:1101 0110 1101 0000

注意

  • 编码之间不能互相识别
  • 网络传输、硬盘存储,必须是以非 unicode 编码方式的 0100 0001

Python 3.X

  • str:内存编码方式为 unicode
    Python 编码详细介绍
  • bytes:

区别

  • 英文字母
    • str
      • 表现形式:s1 = ‘nancy’
      • 内部编码方式:unicode
    • bytes
      • 表现形式:b1 = b’nancy’
      • 内部编码方式:非 unicode
  • 中文
    • str
      • 表现形式:s1 = ‘南肆’
      • 内部编码方式:unicode
    • bytes
      • 表现形式:b1 = b’\xe5\x8d\x97\xe8\x82\x86’
      • 内部编码方式:非 unicode

如何使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wkyU2LEw-1587626451051)(http://qiniuyun.iamnancy.top/str2socket2.png)]

如果你想将一部分内容(字符串)写入文件或通过网络进行传输,必须先转化成bytes才可。平时代码中,使用字符串。

  • str—> bytes:encode 编码
  • bytes—> str:decode 解码