字符编码:
字符:存储信息的东西
编码: 将一连串的字符串转化为字母或数字
信息的转化过程:
键盘-》发送电流 -----》主机(内存)接受电流 --》显示屏- 接受电流(化学反应)-----》图像界面
文本编辑器存储信息的过程:
文本编辑器 ---》写文件 ----》存储信息
1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失。
2.要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘上。
3.在我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都只是在编写一堆字符而已
字符编码发展史:
1.美国创造计算机,计算机只认识数字。
2.机械语言(0,1)---》(Ascll编码)--》字符
Ascll编码: 字符编码是将人类的字符编码成计算机能识别的数字,这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。-----美国的标准
3.各国创建各自的字符编码格式---》乱码
4.创建unicode-兼容各国的字符编码格式
5.unicode----->太占内存------》存储在内存内
6.---》utf-8,--->存储数据--》减小内存
Unicode能和硬盘中其他国家的二进制中的代码进行转换,但是UTF-8只是简化了代码的存储,它并不能与其他国家硬盘中的代码进行关系转换。总而言之只有Unicode编码才能运行其他国家硬盘中的代码,而UTF-8的代码无法进行该操作。
乱码分析:
文件从内存到硬盘的操作----》存文件
文件从硬盘到内存的的操作-》读文件
乱码情况:
1.存文件就已经乱码
2.存文件是不乱码而读文件是乱码
python2和python3的编码区别:
终端有一个特性:你的电脑是什么编码,就按照什么编码的来,windows终端是utf-8
python2有两种存储变量的形式,第一种:unicode;第二种:按照coding头来的
python3只有一种存储变量的形式,unicode
假设python2用utf8存储x='中文'
,当你print(x)
的时候,终端接收gbk的变量x,但是windows终端编码是utf8,会乱码
假设python2用unicode存储,终端接受的是unicode,windows终端编码是utf8还是gbk重要吗?不会乱码=
import sys
sys.getdefaultencoding()
'utf-8'
---判断默认的编码方式
阶段一:启动Python解释器,进行编码-----》错误会报编码错误--》添加coding: + gbk/utf-8--->定义编码格式
阶段二:Python解释器此时就是一个文本编辑器,负责打开文件test.py,即从硬盘中读取test.py的内容到内存中-----报语法错误
阶段三:读取已经加载到内存的代码(Unicode编码格式,进行编码),然后执行,执行过程中可能会开辟新的内存空间
总结:
1.保证不乱码的核心法则就是,字符编码按照什么标准而编码的,就要按照什么标准解码
2.内存中固定使用的就是Uncidoe编码,我们唯一能改变的就是存储到硬盘时使用的编码。
- Unicode----->encode(编码)-------->gbk
- Unicode<--------decode(解码)<----------gbk