Python之编码本质

Python之编码本质

声明本文章仅用于个人学习的内容整理归纳总结,本人才疏学浅错误难免发生。

字节序列

  • Python3 引入两个新的类型bytes、bytearray。
  • bytes不可变字节序列;bytearray是可变字节数组。

编码与解码

  • 编码:str => bytes,将字符串这个字符序列使用指定字符集encode编码为一个个字节组成的序列 bytes
  • 解码:bytes或bytearray => str,将一个个字节按照某种指定的字符集解码为一个个字符串组成的 字符串
    • 编码:字符序列 -> 二进制binary 字节序列 encode编码
    • 解码:bin -> str decode解码
'abc'.encode()
# bytes
# 返回结果:b'abc'
bytes
# 返回结果:bytes
bytes()
# 返回结果:b''
'啊'.encode()
# \x一个十六进制数 转义字符
# 返回结果:b'\xe5\x95\x8a'
b'\xe5\x95\x8a'.decode()
# 解码
# 返回结果:'啊'
x = b'\xe5\x95\x8a'.decode()
len(x)
# 查看x的长度
# 返回结果:1
'啊'.encode()
# unicode编码
# 返回结果:b'\xe5\x95\x8a'
'啊'.encode('gbk')
# unicode使用gbk编码
# 返回结果:b'\xb0\xa1'
b'\xb0\xa1'.decode('big5')
# gbk编码使用big5解码(big5又称大5码是台湾的编码格式)
# 返回结果:'陛'
"啊你好".encode('gbk')
# unicode使用gbk编码
# 返回结果:b'\xb0\xa1\xc4\xe3\xba\xc3'
b'\xb0\xa1\xc4\xe3\xba\xc3'.decode('big5')
# gbk编码使用big5解码
# 返回结果:'陛斕疑'
b'\xb0\xa1\xc4\xe3\xba\xc3'
# 字节序列
b'\xb0\xa1\xc4\xe3\xba\xc3'.decode('gbk')
# '啊你好' 字符序列
# 返回结果:'啊你好'
'\x41'
# str 表示
# 返回结果:'A'
0x41
# int 表示
# 返回结果:65
'ab' > 'ac'
# 字符串比较大小,逐个字符比较
# 返回结果:False
'\x41\x09 \x20\x31'
# 返回结果:'A\t  1'
b'\x41\x09 \x20\x31'
# 返回结果:b'A\t  1'
'A' > 'a'
# 返回结果:False
  • 在二进制的世界里没有编码,就是一个字节一个字节形成的字节序列
  • 如果把二进制当成字符看,需要确认对应的编码表
  • python3 用的字符格式都是unicode编码表

你可能感兴趣的:(Python,python,开发语言)