ascii 涵盖了英文字母大小写,特殊字符,数字。
A : 00000010 8位 一个字节
unicode A : 00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110 32位 四个字节
utf-8 A : 00100000 8位 一个字节
欧洲文字是 16位 三个字节
中 : 00000001 00000010 00000110 24位 三个字节
gbk A : 00000110 8位 一个字节
中 : 00000010 00000110 16位 两个字节
1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等)
1bit 8bit = 1bytes
1byte 1024byte = 1KB
1KB 1024kb = 1MB
1MB 1024MB = 1GB
1GB 1024GB = 1TB
py3:
str 在内存中是用unicode编码。
bytes类型
对于英文:
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。。。。
python2 python3
'''
#python2
#print() print 'abc'
#range() xrange() 生成器
# raw_input()
#python3
#print('abc')
#range()
# input()
# = 赋值 == 比较值是否相等 is 比较,比较的是内存地址 id(内容) 测出其内容地址
# li1 = [1,2,3]
# li2 = li1
# li3 = li2
# print(id(li1),id(li2))
#数字,字符串 小数据池
#数字的范围 -5 -- 256
#字符串:1,不能有特殊字符
# 2,s*20 还是同一个地址,s*21以后都是两个地址
# i1 = 6
# i2 = 6
# print(id(i1),id(i2))
# i1 = 300
# i2 = 300
# print(id(i1),id(i2))
#剩下的 list dict tuple set m
# l1 = [1,]
# l2 = [1,]
# print(l1 is l2)
# s = 'alex'
# s1 = b'alex'
# print(s,type(s))
# print(s1,type(s1))
# s = '中国'
# print(s,type(s))
# s1 = b'中国'
# print(s1,type(s1))
s1 = 'alex'
# encode 编码,如何将str --> bytes, () 内部实际是unicode 转换成UTF-8或者gbk等
s11 = s1.encode('utf-8')
s11 = s1.encode('gbk')
print(s11)
s2 = '中国'
s22 = s2.encode('utf-8')
s22 = s2.encode('gbk')
print(s22)