zoukankan      html  css  js  c++  java
  • 字符编码和文件处理(一)

    一、字符编码

    计算机基础知识:应用程序任何操作硬件的请求都需要想操作系统发起系统调用,然后由操作系统去操作硬件

    人与人沟通需要使用的语言是人类能听懂的中文、英文等等。但是人与计算机沟通,就必须要使用计算机能听懂的语言,计算机只认识数字,所以为了人类能读懂计算机语言,并且计算机能读懂人类的语言,所以必须经过一个过程:  字符——》翻译过程——》数字

    这个过程就是一个字符如何对应一个特定数字的标准,这个标准就是字符编码

    二、文本编辑器存取文件的原理(pycharm、word、nodepad++)

    1、打开编辑器就是在内存中启动了一个进程,因此,用编辑器写的内容就是存放在内存中的,只要断电数据就消失

    2、当点击保存按钮时,编辑器就把内存的数据刷到了硬盘上,这就是永久保存数据的过程

    3、在我们编写py文件时,不去执行这个py文件,就跟编写其他文件没有任何区别,都是在编写一堆字符而已

    三、python解释器执行py文件的原理

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

    第二阶段:python解释器相当于文本编辑器,python解释器会从硬盘上将test.py的当做普通文件读入内存(pyth的解释型决定了解释器只关心文件内容,不关心文件后缀名)

    第三阶段:python解释器解释执行刚刚加载到内存中的test.py的代码,开始识别pyth语法

    四、总结python解释器与文本编辑器的异同

    1、相同点:python解释器是解释执行文件内容的,因此python解释器具备了读py文件的功能,这一点与文本编辑器一样

    2、不同点:文本编辑器试讲文本读入内存后,方便显示或者编辑,不需要理会python的语法,但是python解释器将文件内容读入内存之后,还需要执行python代码,识别python语法

    五、涉及到字符编码的问题

    1、一个python文件中的内容是由一堆字符组成的,存取都涉及到字符编码问题(python文件并未执行,前两个阶段属于这一范畴)

    2、python中的数据类型字符串是由一堆字符组成的(第三阶段)

    六、字符编码的发展史和分类(了解)

    ASCII码最多只能表示256个字符

    七、字符吗的发展阶段可分为三个阶段

    1、现代计算机起源于美国。最早诞生也是基于英文考虑的ASCII

    2、为了满足中文和英文,中国人定制了GBK

    3、多语言混合的文本中,显示会有乱码,为了结局这个问题,需要同时满足:

         a、能够兼容万国字符

         b、与全世界所有的字符编码都有映射关系,这样就能转换成任意国家的字符编码

        总结:内存中统一采用Unicode,浪费空间来换取可以转换成任意编码,硬盘可以采用各种编码,如utf-8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。

    八、乱码分析

      1、存文件时就已经发生乱码

      2、存文件时没有乱码,读文件时发生了乱码

    总结:1、保证不乱码的核心法则就是,字符按照什么标准而编码的,就按什么标准解码,此处的标准就是字符编码

               2、在内存中写的所有字符,都是Unicode编码。

                        Unicode格式(内存)——》encode(保存文件)——》utf-8格式(硬盘)

                        utf-8格式(硬盘)——》decode(读文件)——》Unicode格式(内存)

    补充:浏览网页时,服务器会把动态生成的Unicode内容转换成utf-8再传输到浏览器

               如果服务端encode的编码格式是utf-8,客户端内存中收到的也是utf-8编码的结果

    九、字符编码应用之python

    强调:

       阶段一:启动python解释器

      阶段二:python解释器此时就是一个文本编辑器,负责打开文件test.py,即从硬盘中读取test.py的内容到内存中

      阶段三:读取已经加载到内存的代码(Unicode编码格式),然后执行,执行过程中可能会开辟新的内存空间

  • 相关阅读:
    文件的复制
    反射基础知识
    蓝牙连接 返回的命令
    WebRoot 与 webContent的区别
    时间判断
    java ecplise配置
    异常org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 11; 注释中不允许出现字符串 "--"。的原因
    F、CSL 的神奇序列 【规律】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)
    E、CSL 的魔法 【模拟】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)
    D、CSL 的字符串 【栈+贪心】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)
  • 原文地址:https://www.cnblogs.com/zhangzhechun/p/10234899.html
Copyright © 2011-2022 走看看