字符编码

什么是字符编码

二进制和字符的映射关系

文本编辑器存取文件原理

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.存储变量,输出(往终端打印)-->字符编码

  1. python2默认用coding头指定的解码格式编码存储变量,也可以u'字符'用unicode格式编码存储变量

    则终端为任何解码格式都不会乱码

  2. python3默认用unicode编码存储变量