1. Python2 and Python3
00000001:8 bit = 1 byte(一个字节)
ascii
英: 00000010 8位 一个字节
unicode
英:00000000 00000001 00000010 00000100 32位 四个字节 表示一个字符
中:00000000 00000001 00000010 00000110 32位 四个字节 表示一个字符
utf-8
英: 00100000 8位 一个字节
中: 00000001 00000010 00000110 24位 三个字节
欧洲:16位 两个字节 表示一个字符
亚洲:24位 三个字节 表示一个字符
gbk
英: 00000110 8位 一个字节
中: 00000010 00000110 16位 两个字节
亚洲:16位 两个字节 表示一个字符
1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(只能是utf-8,utf-16,gbk,gb2312,ascii等等)
2. Python3
str 在内存中是用unicode编码。
bytes类型(utf-8,utf-16,gbk,gb2312,ascii等等)
对于英文:
str:表现形式:s = 'alex'
编码方式:010101010 unicode
bytes:表现形式:s = b'alex'
编码方式:000101010 utf-8 gbk。。。。
对于中文:
str:表现形式:s = '中国'
编码方式: 010101010 unicode
bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
编码方式:000101010 utf-8 gbk。。。。
范例:encode 编码,如何将str(unicode) --> bytes(utf-8或GBK)
s1 = 'alex'
s11 = s1.encode('utf-8')
s11 = s1.encode('gbk')
print(s11)
s2 = '中国'
s22 = s2.encode('utf-8')
s22 = s2.encode('gbk')
print(s22)
执行结果
b'alex'
b'alex'
b'\xe4\xb8\xad\xe5\x9b\xbd'
b'\xd6\xd0\xb9\xfa'
2.1 encode(编码)与decode(解码)
范例1(中文):
# str --->byte encode 编码
s = "关羽"
b = s.encode("utf-8")
print(b)
# byte --->str decode 解码
s1 = b.decode("utf-8")
print(s1)
执行结果:
b'\xe5\x85\xb3\xe7\xbe\xbd'
关羽
范例2(英文):
# str --->byte encode 编码
s = "abc"
b = s.encode("utf-8")
print(b)
# byte --->str decode 解码
s1 = b.decode("utf-8")
print(s1)
# byte --->str decode 解码
s2 = b.decode("gbk")
print(s1)
执行结果
b'abc'
abc
abc
网友评论