美文网首页
03_Python字符编码_全栈开发学习笔记

03_Python字符编码_全栈开发学习笔记

作者: 豆行僧 | 来源:发表于2018-10-09 16:23 被阅读0次

    1. Python2 and Python3

    00000001:8 bit = 1 byte(一个字节)

    ascii
    英: 00000010 8位 一个字节

    unicode
    英:00000000 00000001 00000010 00000100 32位 四个字节 表示一个字符
    中:00000000 00000001 00000010 00000110 32位 四个字节 表示一个字符

    utf-8
    英: 00100000 8位 一个字节
    中: 00000001 00000010 00000110 24位 三个字节
    欧洲:16位 两个字节 表示一个字符
    亚洲:24位 三个字节 表示一个字符

    gbk
    英: 00000110 8位 一个字节
    中: 00000010 00000110 16位 两个字节
    亚洲:16位 两个字节 表示一个字符

    1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
    2,文件的储存,传输,不能是unicode(只能是utf-8,utf-16,gbk,gb2312,ascii等等)


    2. Python3

    str 在内存中是用unicode编码。

    bytes类型(utf-8,utf-16,gbk,gb2312,ascii等等)
    对于英文:
    str:表现形式:s = 'alex'
      编码方式:010101010 unicode
    bytes:表现形式:s = b'alex'
      编码方式:000101010 utf-8 gbk。。。。
    对于中文:
    str:表现形式:s = '中国'
      编码方式: 010101010 unicode
    bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
      编码方式:000101010 utf-8 gbk。。。。

    范例:encode 编码,如何将str(unicode) --> bytes(utf-8或GBK)

    s1 = 'alex'
    s11 = s1.encode('utf-8')
    s11 = s1.encode('gbk')
    print(s11)
    
    s2 = '中国'
    s22 = s2.encode('utf-8')
    s22 = s2.encode('gbk')
    print(s22)
    

    执行结果

    b'alex'
    b'alex'
    b'\xe4\xb8\xad\xe5\x9b\xbd'
    b'\xd6\xd0\xb9\xfa'
    

    2.1 encode(编码)与decode(解码)

    范例1(中文):

    # str --->byte  encode 编码
    s = "关羽"
    b = s.encode("utf-8")
    print(b)
    
    # byte --->str decode 解码
    s1 = b.decode("utf-8")
    print(s1)
    

    执行结果:

    b'\xe5\x85\xb3\xe7\xbe\xbd'
    
    关羽
    

    范例2(英文):

    # str --->byte  encode 编码
    s = "abc"
    b = s.encode("utf-8")
    print(b)
    
    # byte --->str decode 解码
    s1 = b.decode("utf-8")
    print(s1)
    
    # byte --->str decode 解码
    s2 = b.decode("gbk")
    print(s1)
    

    执行结果

    b'abc'
    abc
    abc
    

    相关文章

      网友评论

          本文标题:03_Python字符编码_全栈开发学习笔记

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