Python(五)
1.字符编码
#1、软件运行前,软件的代码及其相关数据都是存放于硬盘中的
#2、任何软件的启动都是将数据从硬盘中读入内存,然后cpu从内存中取出指令并执行
#3、软件运行过程中产生的数据最先都是存放于内存中的,若想永久保存软件产生的数据,则需要将数据由内存写入硬盘

1.1阶段一:一家独大
ASCII表的特点:
1、只有英文字符与数字的一一对应关系
2、一个英文字符对应1Bytes,1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符
3、采用8位二进制数对应一个英文字符串

1.2阶段二:诸侯割据、天下大乱
# GBK表的特点:
1、只有中文字符、英文字符与数字的一一对应关系
2、一个英文字符对应1Bytes
一个中文字符对应2Bytes
补充说明:
1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符
2Bytes=16bit,16bit最多包含65536个数字,可以对应65536个字符,足够表示所有中文字符
1.3阶段三:分久必合
unicode(内存中统一使用Unicode):
1、兼容万国字符,与万国字符都有对应关系
2、采用16位(16bit=2Bytes) 二进制对应一个中文字符串,个别生僻会采用4Bytes、8Bytes
3、老的字符编码都可以转换成Unicode,但是不能通过Unicode互转

1.4 utf-8:unicode transform format-8编码
那为何在内存中不直接使用utf-8呢?
utf-8是针对Unicode的可变长度字符编码:一个英文字符占1Bytes,一个中文字符占3Bytes,生僻字用更多的Bytes存储
unicode更像是一个过渡版本,我们新开发的软件或文件存入硬盘都采用utf-8格式,等过去几十年,所有老编码的文件都淘汰掉之后,会出现一个令人开心的场景,即硬盘里放的都是utf-8格式,此时unicode便可以退出历史舞台,内存里也改用utf-8,天下重新归于统一

2.文本文件存取乱码问题
存乱了,解决办法是,编码格式应该设置成支持文件内字符串的格式
取乱了,解决办法是,文件是以什么编码格式存入硬盘的,就应该以什么编码格式读入
python解释器默认的文件的编码
python3默认:utf-8
python2默认:ASCII
2.1.1保证运行python程序前两个阶段不乱码的核心法则
指定文件头修改默认的编码
在py文件的首行写:
# coding utf-8
# coding 文件当初存入硬盘时所采用的编码格式