美文网首页Python全栈
13.Python之字符编码

13.Python之字符编码

作者: 免跪姓黄 | 来源:发表于2020-02-11 11:30 被阅读0次

    Python之字符编码

    1. 字符编码

      • 字符编码记录的是二进制与文字的对应关系。
    2. 常见的字符编码

      • ASCII码:包含英文字母、数字和特殊字符与二进制的的对应关系。一个字符占用1个字节。

        • a:01000001
      • GBK:包含本国文字、英文字母、数字和特殊字符与二进制的对应关系。一个英文字符占用1个字节,一个中文字符占用2个字节。

        • a:01000001
        • 中:01001001 01000010
      • Unicode(万国码):包含全世界的所有文字、数字和特殊字符与二进制的对应关系。一个字符占用4个字节。

        • a:01000001 01000010 01000011 00000001
        • 中:01001001 01000010 01100011 00000001
      • UTF-8:包含全世界所有的文字、数字和特殊字符与二进制的对应关系。一个英文字符占用1个字节,一个欧洲字符占用2两字节,一个亚洲字符占用3个字节。

        • a:01000001
        • To(欧洲字符):01000001 01000010
        • 中(亚洲字符):01001001 01000010 01100011

        知识点:在计算机内存中,统一使用Unicode编码,当需要将数据保存到硬盘或需要使用网络传输的时候,就转换为非Unicode编码,例如:Linux上的UTF-8编码或者Windows上的GBK编码。Python中所有的数据类型在内存中都使用Unicode编码,当需要存储到硬盘或使用网络传输时,需要将内存中Unicode编码的数据类型转换成非Unicode编码的bytes数据类型

    3. bytes数据类型

      • bytes 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本。主要用于文件操作和网络编程。
    4. bytes数据类型的转化

      • 字符串与bytes类型的转化

        # 字符串转化bytes
        s_1 = "abc"
        s_2 = "字符串"
        b_1 = s_1.encode("UTF-8")
        b_2 = s_2.encode("UTF-8")
        print(b_1, type(b_1))
        print(b_2, type(b_2))
        '''
        输出结果:
        b'abc' <class 'bytes'>
        b'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2' <class 'bytes'>
        '''
        # 字符串的中文和英文的bytes表现形式不一样
        
        # bytes转换字符串
        b_1 = b"abc"
        b_2 = b'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'
        s_1 = b_1.decode("UTF-8")   # 用什么编码类编码的,也要用什么编码类型解码。
        s_2 = b_2.decode("UTF-8")
        print(s_1, type(s_1))
        print(s_2, type(s_2))
        '''
        输出结果:
        abc <class 'str'>
        字符串 <class 'str'>
        '''
        

    相关文章

      网友评论

        本文标题:13.Python之字符编码

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