Python之字符编码
-
字符编码
- 字符编码记录的是二进制与文字的对应关系。
-
常见的字符编码
-
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数据类型
-
-
bytes数据类型
- bytes 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本。主要用于文件操作和网络编程。
-
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'> '''
-
网友评论