美文网首页
Python 编码

Python 编码

作者: 丘山Ivan | 来源:发表于2019-03-05 22:10 被阅读0次

ascii 码:

A: 00000010  一个字节,8位。只有英文、数字、符号。
最后一位是0。7位就够了,最后一位是预留扩展用的。

Unicode:

A: 00000010 00000010 00000010 00000010  4个字节,32位。
中: 00000010 00000010 00000010 00000010  4个字节,32位
万国码,包含所有国家的文字。

UTF-8:

A: 00000010 一个字节  8位
中: 00000010 00000010 00000010  3个字节,24位
是Unicode的升级优化版。

gbk:

A: 00000010 一个字节  8位
中: 00000010 00000010  2个字节,16位
是国人开发的只包含大多数中文和英文。
(ps:中文一共有9w+的汉字,而16位只能包含6w+的汉字)

Python3 和 Python2 共同的特点:
1.各个编码之间的二进制,是不能互相是别的,会产生乱码。
2.文件的存储,传输,不能用Unicode,因为存储空间和流量太大(只能是utf-8,gbk,gb2312,ascii等)

Python3编码:
1.str在内存中是用Unicode编码的。
2.bytes类型(不是Unicode)

  • 对于英文:
    • str:
      表现形式:s = 'alex'
      编码方式:01010101 unicode

    • bytes:
      表现形式:s =b 'alex'
      编码方式:00010101 utf-8 gbk ...

      s = 'alex'  
      s1 = b'alex'  
      print(s,type(s))   #alex<class 'str'>
      print(s1,type(s1))  #b'alex' <class 'bytes>
      
    • 对于英文:

      • str:
        表现形式:s = '中国'
        编码方式:01010101 unicode
      • bytes:(一个汉字占三个是uft-8,占2个是gbk
        表现形式:s = b'x\e91\e91\e91\e02\e02\e02'
        编码方式:00010101 utf-8 gbk ...
      s = '中国'  
      #s1 = b'中国'  #会报错
      #encode 编码,如何将str->bytes ,并且是utf-8格式
      s1 = s.encode('utf-8');
      s2 = s.encode('gbk');#b'\xd6\xd0\xb9\xfa'
      print(s,type(s))   #alex<class 'str'>
      print(s1,type(s1))  #b'\xe4\xb8\xad\xe5\x9b\xbd' <class 'bytes>
      

相关文章

网友评论

      本文标题:Python 编码

      本文链接:https://www.haomeiwen.com/subject/wyjauqtx.html