一、文本编辑器存取文件的原理(nodepad++,pycharm,word)
1、打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失
2、要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘上。
3、在我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都只是在编写一堆字符而已。
二、python解释器执行py文件的原理 ,例如python test.py
复制代码
#第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器
#第二阶段:python解释器相当于文本编辑器,去打开test.py文件,从硬盘上将test.py的文件内容读入到内存中(小复习:pyhon的解释性,决定了解释器只关心文件内容,不关心文件后缀名)
#第三阶段:python解释器解释执行刚刚加载到内存中test.py的代码( ps:在该阶段,即真正执行代码时,才会识别python的语法,执行文件内代码,当执行到name="egon"时,会开辟内存空间存放字符串"egon")
三、总结python解释器与文件本编辑的异同
#1、相同点:python解释器是解释执行文件内容的,因而python解释器具备读py文件的功能,这一点与文本编辑器一样
#2、不同点:文本编辑器将文件内容读入内存后,是为了显示或者编辑,根本不去理会python的语法,而python解释器将文件内容读入内存后,可不是为了给你瞅一眼python代码写的啥,而是为了执行python代码、会识别python语法。
一 什么是字符编码
如何能让计算机读懂人类的字符?
  必须经过一个过程:
  #字符--------(翻译过程)------->数字
  #这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码
二 以下两个场景下涉及到字符编码的问题:
#1、一个python文件中的内容是由一堆字符组成的,存取均涉及到字符编码问题(python文件并未执行,前两个阶段均属于该范畴)
#2、python中的数据类型字符串是由一串字符组成的(python文件执行时,即第三个阶段)
四 总结字符编码的发展可分为三个阶段(重要)
基于目前的现状,内存中的编码固定就是unicode,我们唯一可变的就是硬盘的上对应的字符编码。
此时你可能会觉得,那如果我们以后开发软时统一都用unicode编码,那么不就都统一了吗,关于统一这一点你的思路是没错的,但我们不可会使用unicode编码来编写程序的文件,因为在通篇都是英文的情况下,耗费的空间几乎会多出一倍,这样在软件读入内存或写入磁盘时,都会徒增IO次数,从而降低程序的执行效率。因而我们以后在编写程序的文件时应该统一使用一个更为精准的字符编码utf-8(用1Bytes存英文,3Bytes存中文),再次强调,内存中的编码固定使用unicode。
1、在存入磁盘时,需要将unicode转成一种更为精准的格式,utf-8:全称Unicode Transformation Format,将数据量控制到最精简
2、在读入内存时,需要将utf-8转成unicode
所以我们需要明确:内存中用unicode是为了兼容万国软件,即便是硬盘中有各国编码编写的软件,unicode也有相对应的映射关系,但在现在的开发中,程序员普遍使用utf-8编码了,估计在将来的某一天等所有老的软件都淘汰掉了情况下,就可以变成:内存utf-8<->硬盘utf-8的形式了。
总结
1、保证不乱吗的核心法则就是,字符按照什么标准而编码的,就要按照什么标准解码,此处的标准指的就是字符编码
2、在内存中写的所有字符,一视同仁,都是unicode编码,比如我们打开编辑器,输入一个“你”,我们并不能说“你”就是一个汉字,此时它仅仅只是一个符号,该符号可能很多国家都在使用,根据我们使用的输入法不同这个字的样式可能也不太一样。只有在我们往硬盘保存或者基于网络传输时,才能确定”你“到底是一个汉字,还是一个日本字,这就是unicode转换成其他编码格式的过程了

©著作权归作者所有:来自51CTO博客作者六个橘子的原创作品,谢绝转载,否则将追究法律责任

更多相关文章

  1. 在vscode中go编码发生的问题整理
  2. 非线性模代数(THP)预编码
  3. JS获取指定字符串中出现次数最多的字符及其出现次数
  4. Matlab基本运算3
  5. POSIX正则表达式的一些事
  6. chrome查看网站字符集编码的方法(不需要安装charset)
  7. shell脚本之正则表达式
  8. java安全编码指南之:基础篇
  9. python中使用charset判断字符串编码

随机推荐

  1. view 动态设置高宽
  2. android 获取IMEI号
  3. android与gitlab的结合使用
  4. Android suspend/resume flow (上篇: Use
  5. Android(安卓)View Animation Example
  6. 【Android】android按钮的四种点击事件
  7. 编译Android donut
  8. Android(安卓)的布局优化
  9. 详解Android系统中的root权限获得原理
  10. android:windowSoftInputMode用法