python编码

  • ascii
  • 只有英文
  • 一个字符占8位,是1个字节
  • unicode
  • 英文一个字符占32位,是4个字节
  • 中文一个字符占32位,是4个字节
  • utf-8
  • 英文中一个字符占8位,是1个字节
  • 中文中一个字符占24位,是3个字节
  • gbk
  • 英文中一个字符占8位,是1个字节
  • 中文中一个字符占16位,是2个字节

注意:

  • 各个编码之间的二进制是不能互相识别的,会产生乱码

  • 文件的储存和传输不能是Unicode,只能是utf-8或者utf-16或者gbk或者gb312等(因为Unicode所占的空间太大了)

python3中:

  • str在内存中是用Unicode编码的。
  • bytes类型和str类型的区别是编码方式不同,bytes不是用Unicode编码的,是用utf-8或者gbk或者ASCII等。
  • 对于英文:
  • str:
      表现形式:s = 'alex'
      编码方式:Unicode
  • bytes:
      表现形式:s = b'alex'
      编码方式:可能是utf-8或者gbk或者其他,但不会是Unicode
  • 对于中文:
  • str:
      表现形式:s = '小生'
      编码方式:Unicode
  • bytes:
      表现形式:s = b'x\e91\e23'
      编码方式:可能是utf-8或者gbk或者其他,但不会是Unicode


  • 讲str转换成bytes
s1 = 'xiaosheng'
new_s1 = s1.encode('utf-8')
print(new_s1)   # b'xiaosheng'

s2 = '小生'
new_s2 = s2.encode('utf-8')
print(new_s2)  # b'\xe5\xb0\x8f\xe7\x94\x9f'

s3 = '小生'
new_s3 = s3.encode('gbk')
print(new_s3)   # b'\xd0\xa1\xc9\xfa'

你可能感兴趣的:(python编码)