一、初始编码
1、计算机的传输和储存都是用二进制的,(只能识别0和1)
2、单位:
8位bit == 1个字节(byte)
1byte 1024byte==1KB
1KB 1024KB ==1M
........
1GB 1024GB==1TB
3、编码历史
最早美国使用ASCII码:1个字节8位,表示字母、数据、特殊字符,2个字节代表一个中文不够
响应全球推送Unicode:四个字节代表一个中文,其他不变(四个字节浪费资源)
Unicode升级utf-8: 三个字节代表一个中文,其他不变
国产GBK : 两个字节代码一个中文,其他不变
二、编码应用
1、各编码之间二进制是不能互相识别的,会乱码
2、文件储存、传输不能是Unicode,只能是utf-8/16,GBK/GBK2312、ASCII等
3、python3中内存中是用Unicode编码的
4、文件储存是用byte类型(即utf-8或GBK),字符串前加 b就表现成byte类型(编码方式:utf-8或GBK)
英文加B后显示的byte类型,人可以看明白,中文显示的是二进制,可以跟着二进制字节码来看出是用的
utf-8(3个字节)还是GBK(2个字节)
三、编码需知
1.在python2默认编码是ASCII, python3里默认是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string