编码进阶

  • ANSII码:包含英文,数字,和特殊字符与01之间的关系
    一个字符一个字节
  • GBK:只包含中文,英文字母,数字,特殊字符与01之间的关系
    一个字符两个字节
  • Unicode:万国码,有世界上所有语言与01之间的关系
    一个字符四个字节
  • UTF-8:改良版万国码,根据语言不通调整字节大小
  1. 不同密码本之间不能互相识别
  2. 数据在内存中全部是以Unicode编码,但是当你的数据用于网络传输或储存在硬盘中,必须是以非Unicode编码(UTF-8,GBK)
  3. 基于第一和第二条,再进行网络传输时内存中要用非Unicode方法存储,对于Python来说,有了以下的类型
    • bytes
      • 英文:
        str:
        内存中编码方式:Unicode
        表现:'hello'
        bytes:
        内存中编码方式:非Unicode
          b=b'hello'
          print(b,type(b))
          #b'hello' <class 'bytes'>
        
      • 中文
        str:
        内存中的编码方式:Unicode
        表现:'中国'
        bytes:
        内存中的编码方式:非Unicode #UTF-8
        表现:'中国'
        bytes:
           b='中国'
           b=b.encode('utf-8')  #编码
           print(b,type(b))
           #b'\xe4\xb8\xad\xe5\x9b\xbd' <class 'bytes'>
           b=b.decode('utf-8')
           print(b,type(b))     #解码
           #中国 <class 'str'>
        
  4. utf-8和gbk之间的转化都是通过Unicode运行的
posted @ 2020-09-06 21:08  life_if_forever  阅读(104)  评论(0)    收藏  举报