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>
- str:
-
网友评论