Python全栈

13.Python之字符编码

2020-02-11  本文已影响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'>
      '''
      
上一篇下一篇

猜你喜欢

热点阅读