编码的进阶
- 不同的密码本之间不能互相识别
- 数据在内存中全部都是以Unicode编码的,但是当你的数据用于网络传输或者存储到硬盘中,必须是以非Unicode编码(utf-8,gbk等等)
-
英文:
str:'hello'
内存中的编码方式:Unicode
表现形式:'hello'
bytes:
内存中的编码方式:非Unicode
表现形式:b'hello' -
中文:
str:'中国'
内存中的编码方式:Unicode
表现形式:'中国'
bytes:
内存中的编码方式:非Unicode #utf-8
表现形式:b'xe4xb8xadxe5x9bxbd'
具体代码:
#只针对于英文
s = b'hello world' #bytes类型 不是字符串
print(s,type(s)) #b'hello world' <class 'bytes'>
s1 = s[1:]
print(s1) #b'ello world' bytes类型切片#中文条件下 b = '中国' b1 = b.encode('utf-8') print(b1) #b'xe4xb8xadxe5x9bxbd' 中文下的utf-8编码 #str 转换为 bytes s2 = '中华' #encode 编码 x2 = s2.encode('utf-8') print(x2) #b'xe4xb8xadxe5x8dx8e' #bytes 转换为 str #decode 解码 s3 = b'xe4xb8xadxe5x8dx8e' print(s3.decode('utf-8')) #中华 #utf-8转化为 gbk s4 = '中国人' xx = s4.encode('gbk') print(xx) #b'xd6xd0xb9xfaxc8xcb' #gbk 转化为 utf-8 xx1 = xx.decode('gbk') print(xx1) #中国人 x11 = xx1.encode('utf-8') print(x11) #b'xe4xb8xadxe5x9bxbdxe4xbaxba' print(x11.decode('utf-8')) #中国人
-