Python学习日记day4 字符编码

1.内存和硬盘都是用来存储的。node

CPU:速度快python

硬盘:永久保存编程

2.文本编辑器存取文件的原理(nodepad++,pycharm)网络

   打开编辑器就能够启动一个进程,是在内存中的,因此在编辑器编写的内容也都是存放在内存中的,断电后数据就丢失了。于是须要保存在硬盘上,点击保存按钮或快捷键,就把内存中的数据保存到了硬盘上。在这一点上,咱们编写的py文件(没有执行时),跟编写的其余文件没有什么区别,都只是编写一堆字符而已。编程语言

3.python解释器执行py文件的原理,例如python  test.py编辑器

  第一阶段:python解释器启动,此时就至关于启动了一个文本编辑器编码

  第二阶段:python解释器至关于文本编辑器,去打开test.py,从硬盘上将test.py的文件内容读入到内存中code

  第三阶段:python解释器执行刚刚加载到内存中的test.py的代码(在该阶段,即执行时,才会识别python的语法,执行到字符串时,会开辟内存空间存放字符串)对象

总结:python解释器与文本编辑器的异同进程

相同点:python解释器是解释执行文件内容的,于是python解释器具有读py文件的功能,这一点与文本编辑器同样

不一样点:文本编辑器将文件内容读入内存后,是为了显示/编辑,而python解释器将文件内容读入内存后,是为了执行(识别python的语法)

4.什么是编码

  编码是信息从一种形式或格式转换为另外一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机电视、遥控和通信等方面普遍使用。编码是信息从一种形式或格式转换为另外一种形式的过程。解码,是编码的逆过程。

5.如下两个场景涉及到字符编码的问题:

  1.一个python文件中的内容是由一堆字符组成的(python文件未执行时)

  2.python中的数据类型字符串是由一串字符组成的(python文件执行时)

6.字符编码的发展史

  

阶段一:现代计算机起源于美国,最先诞生也是基于英文考虑的ASCII

      ASCII:一个Bytes表明一个字符(英文字符/键盘上的全部其余字符),1Bytes=8bit,8bit能够表示0-2**8-1种变化,便可以表示256个字符

    ASCII最初只用了后七位,127个数字,已经彻底可以表明键盘上全部的字符了(英文字符/键盘的全部其余字符)

    后来为了将拉丁文也编码进了ASCII表,将最高位也占用了

阶段二:为了知足中文,中国人定制了GBK

  GBK:2Bytes表明一个字符,为了知足其余国家,各个国家纷纷定制了本身的编码,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr

阶段三:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

因而产生了unicode, 统一用2Bytes表明一个字符, 2**16-1=65535,可表明6万多个字符,于是兼容万国语言

但对于通篇都是英文的文原本说,这种编码方式无疑是多了一倍的存储空间(二进制最终都是以电或者磁的方式存储到存储介质中的)

因而产生了UTF-8,对英文字符只用1Bytes表示,对中文字符用3Bytes

须要强调的是:

  unicode:简单粗暴,多有的字符都是2Bytes,优势是字符--数字的转换速度快;缺点是占用空间大。

  utf-8:精准,可变长,优势是节省空间;缺点是转换速度慢,由于每次转换都须要计算出须要多长Bytes才可以准确表示。

1.内存中使用的编码是unicode,用空间换时间(程序都须要加载到内存才能运行,于是内存应该是越快越好)

2.硬盘中或网络传输用utf-8,保证数据传输的稳定性。

7、字符编码转换 

在python2中有两种字符串类型str和unicode

  在python2中,str就是编码后的结果bytes,因此在Python2中,unicode字符编码的结果就是str/bytes

 

对于unicode格式的数据来讲,不管怎么打印,都不会乱码

python3中的字符串与python2中的u'字符串',都是unicode,因此不管如何打印都不会乱码

在python3中也有两种字符串类型str和bytes\

  str是unicode

encoude()#编码

decode()#解码

相关文章
相关标签/搜索