目录
字符编码
什么是字符编码
二进制和字符的映射关系
文本编辑器存取文件原理
1.打开文本编辑器,相当于在内存中启动了一个进程,所以编辑器写的内容也都是存放在内存中,断电后数据丢失
2.要永久保存,需要点击保存按钮,按对应编码格式编码后将数据刷入硬盘
字符编码发展史
1.最初由美国发展-->ASCII码
2.其他国家也逐渐使用电脑并形成自己国家的编码格式,如中国gb2312,日本shift等
3.为了方便国际交流,美国人早出联合编码格式unicode
4.内存中使用unicode,但是如果用unicode编码数据存入硬盘会占用过多内存,因而内存中是unicode,硬盘是utf8,并且utf8只与unicode有对应关系
5.未来趋势,内存硬盘都将是utf8
乱码的两种情况
1.乱码发生在解码阶段
数据写入内存编码格式为unicode,存入硬盘编码格式为utf8,但是从硬盘读取数据时解码的格式gbk
2.乱码放生在编码阶段
数据写入内存编码格式为unicode(且内容包含多种编码格式),存入硬盘编码格式为gbk,则从硬盘读取数据时无论用什么解码格式均乱码
解决乱码方法
用什么编码格式写入就用什么编码格式读取
window记事本及windows终端都是用gbk格式编码
python2和python3字符编码的区别
执行python程序的三个阶段
1.第一步:启动python解释器,此时解释器相当于一个文本编辑器,从硬盘中读取py文件字符-->解码
①python2默认ASCII码解码;python3默认utf8解码
②如果写入pycharm中字符用gbk编码,那么想要用python正常读入字符,需加#coding:gbk控制解码格式
2.解析字符-->报语法/逻辑错误
3.存储变量,输出(往终端打印)-->字符编码
-
python2默认用coding头指定的解码格式编码存储变量,也可以
u'字符'
用unicode格式编码存储变量则终端为任何解码格式都不会乱码
python3默认用unicode编码存储变量