目录
一,字符编码
1.1字符集和编码
1.1.1ascii
1.1.2ANSI
1.1.3Unicode
0 1==》10110010010
电脑如何存储文字信息
ascii==>编排了128个字符,只需要7个0和1就可以表示,预留出一位表示特殊符号,所以八位比特位等于一个字节byte
很显然128个字符不能满足需求,美国设置了一套标准ANSI 2byte
00000000 00000000
到了中国,gb2312编码,gbk编码(window默认)
到了台湾,big5编码
问题:编码相同,但解释不同,交流障碍
Unicode:万国码
早期没有意思到这个问题,UCS-2 2个字节
进行扩充,UCS-4 4个字节
00000000 00000000 00000000 10000000
浪费空间,解决
utf是可变长度的Unicode,可以进行数据的传输和存储
utf-8 最短的字节长度
英文;8bit,1byte
欧洲文字:16bit,2byte
中文:24bit,3byte
utf-16,最短的字节长度是16
1.2总结:
ascii 8bit 1byte
gbk 16bit 2byte window默认
unicode 32bit 4byte(没法用只是一个标准)
utf-8 mac默认·
英文;8bit,1byte
欧洲文字:16bit,2byte
中文:24bit,3byte
gbk和utf-8不能直接转化,标准不同。
二,解码
2.1bytes
程序员平时遇到的所有数据最终单位都是字节
# s="周杰伦"
# s1=s.encode('gbk')#2个字节
# s2=s.encode("utf_8")#3个字节
# print(s1)
# print(s2)
b'\xd6\xdc\xbd\xdc\xc2\xd7'
b'\xe5\x91\xa8\xe6\x9d\xb0\xe4\xbc\xa6'
s1=s.decode("gbk")
print(s1)
s2=s1.encode("utf_8")
print(s2)
#str.encode("编码规则")进行编码
#bytes.decode("编码规则")进行解码
s="年后asn"
s2=s.encode("utf_8")
print(s2)#b'\xe5\xb9\xb4\xe5\x90\x8easn' 中文三个字符,英文一个字符