信息的存储单位:位(bit)–>字节(Byte=8bit,已经可以表示所有的英语符号)–>字符(char=2Byte) 1K =1024byte 1M = 1024K G T P
字节是电脑最小的处理单元 一个字节:0x01
字符:也是一个信息单位,它是各种文字和符号的总称.比如人类 各国看得懂的文字,符号,图形符号,数字.
字符编码:是指对于字符集中的字符,将其编码为特定的二进制数,以便计算机处理.
解码:将计算机处理后的二进制信息,转换成人类看得懂的字符.
字符集和字符编码往往被认为是同文义的概念.ASCII字符编码既表示了字符集也表示了的对应的字符编码.
ASCII字符集:共有128个字符(美国,本身只需要一个字节),包含显示字符(英文大小写,阿拉伯数字)和控制字符(回车,空格键)
GB2312字符集:中国标准的简体中文字符集,其中还有一个中国的GBK字符集
Unicode字符集:世界各国语言中使用到的所有字符.用了4个字节,2个字符.汉字’严’的Unicode编码是十六进制数4E25,转化成二进制有15位
UTF-8:是一种针对Unicode的可变长度字符编码,它使用一到四个字节来表示字符.ASCII字符继续用一个字节表示.中文可能用到4个字节.
先来一个关于简单的ASCII字符集,解码和编码的例子
1 2 3 4 5 6 7 8 9 10 11 12 13
| a = 12 b = oct(a) print(b) print([n for n in b'ahello']) print([int(n).to_bytes(1,'big').decode('utf-8') for n in b'ahello'])
|
中文字符集的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| print(sys.getdefaultencoding()) c ='严'.encode('utf-8') print(b'\xe4\xb8\xa5'[0]) print(len(c)) print(c.decode()) from idna import unicode unicode(b'\xe4\xb8\xa5','utf-8') print(int().from_bytes(c, 'little')) print(int().from_bytes(c, 'big')) print('--------------------') print(int(10860772).to_bytes(3, 'little')) print(int(14989477).to_bytes(3, 'big').decode('utf-8')) print(int(14989477).to_bytes(3, 'big')) print(int(14989477).to_bytes(8, 'big'))
|
u’’ –> str
1 2
| s = '\u6211' s = s.encode('utf-8').strip().decode()
|