字符编码

目录

字符编码:

字符:存储信息的东西

编码: 将一连串的字符串转化为字母或数字

信息的转化过程:

键盘-》发送电流 -----》主机(内存)接受电流 --》显示屏- 接受电流(化学反应)-----》图像界面

文本编辑器存储信息的过程:

文本编辑器 ---》写文件 ----》存储信息

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
posted @ 2019-09-17 15:22  black__star  阅读(223)  评论(0编辑  收藏  举报