编码,密码本,文字与二进制
ASCLL码 英文字母,数字,特殊字符与010101的对应关系
a 01000001
GBK 国标 中文:两个字符表示,英文沿用ASCLL,用一个字节来表示
Unicode万国码
用四个字节来表示字符,浪费时间
UTF-8
一个英文字符用一个字节来表示
欧洲文字用两个字节来表示
一个中文字符用三个字节来表示
在计算机内存中,统一使用Unicode编码,当数据需要保存到硬盘或者需要网络传输时,
就会转换为非Unicode码,如UTF-8
举个列子:用文件编辑器的时候如word,编码用的时Unicode,但是保存到电脑中的时候时UTF-8编码
1.不同密码本是否能相互识别:不能
2.数据在内存中都是以Unicode编码,但是存到硬盘或网络传输时转换为非Unicode
bytes和字符串类型相似,对于字符串的操作在bytes也可以实现,表现形式b"hello"
字符串类型储存时就从Unicode编码转换为bytes类型进行储存
str转换为bytes
b = b"hello"
print(b.upper())
print(b,type(b))
b’HELLO’
b’hello’ <class ‘bytes’>
str转换为UTF-8
c = “中国”
b = c.encode(“UTF-8”)#encode编码
print(b) #b’\xe4\xb8\xad\xe5\x9b\xbd’
b2 = .decode(“UTF-8”)b#decode解码
print(b2)#中国,解码
GBK转换为UTF-8
c = “中国”
b = c.encode(“GBK”)
print(b)#b’\xd6\xd0\xb9\xfa’
c = b’\xd6\xd0\xb9\xfa’
b = c.decode(“GBK”)
print(b)
b1 = b.encode(“UTF-8”)
print(b1)