机器识别的语言
二进制(0和1))
人类识别的语言
中文、英文等等
我们人类怎么才能跟机器交流?
通过一张编码表把我们人类的每个字对于到机器识别的二进制
h=1101000(十进制104)
编码表
编码表随着时间的的更新,出现了多个版本
- ASCII:数字 32–126 分配给了能在键盘上找到的字符
- GBK:基于上代,增加支持了中文
- Unicode:基于上代,支持了基本所有的语言(万国码)
- UTF-8:基于Unicode做了优化,优化区别了不同语言的占用字符个数(关系到容量的大小,从而可能导致的读写问题)
编码和解码
读取:解码操作
读取编码只要能匹配到解码表就能读取到数据
-
# coding:utf-8:设置python的默认读取python代码的编码表
- 不设置的话,默认读取的是系统的默认编码格式,因为数据先被系统调用到内存,系统层会进行读取,如果发现第一行是coding:utf-8就会选择utf-8进行解码(所以必须要加上)
存储:编码操作
存储编码错误可能导致数据丢失
- 内存存储
Unicode有对应每个编码表的转换方式,所以需要编码转换都是基于Unicode
内存固定使用的是Unicode万国码,程序运行后,存储的编码格式都是Unicode
由于年代不同就会存在不同的编码表数据,如果之前使用的BGK如果需要被读取到,就需要进行BGK–Unicode转换编码的过程,再由我们现在的编译器utf-8进行读取,也产生一次转换编码
- 硬盘存储
硬盘编码存储都是基于编译器的操作来完成,由内存的Unicode编码转换成自己设置的编码表进行存储,读取的话也需要进行匹配,不然就会存在乱码问题。
总结:数据存储(读写)编码方式都是需要提前设定,不能通过编译器或者系统默认的编码表来避免错误,因为一个数据不会只存在一个地方运行