• 字符编码


    一、前置知识

      1、三大核心硬件

        所有软件都是运行硬件上的,运行软件相关的三大核心硬件为:CPU、内存、硬盘

        ⑴软件运行前,代码及其相关数据是存放于硬盘中的

        ⑵任何软件启动都是将数据从硬盘读入内存,然后cpu从内存中取出指令并执行

        ⑶软件运行过程中产生的数据最先都是存放于内存中的,若想永久保存产生的数据,则需要将数据由内存写入硬盘

      2、文本编辑器读取文件内容

        ⑴启动一个文件编辑器

        ⑵文件编辑器会将文件内容从硬盘读入内存

        ⑶文本编辑器会将刚刚读入内存的内容显示到屏幕上

      3、python解释器执行文件

        ⑴启动python解释器,相当于启动一个文本编辑器

        ⑵从硬盘将文件内容读取到内存中

        ⑶python解释器执行刚刚读入内存的内容,开始识别python语法

    二、字符编码

      1、什么是字符编码

        人类与计算机用的都是人类能懂得语言,而计算机只能识别二进制数,要想计算机能识别字符,必须经历一个翻译过程,翻译后的字符与数字一一对应。字符编码中编码就是翻译或者转换的意思,即将人能理解的字符翻译成计算机能识别的数字

      2、字符编码发展

        ⑴、ASCII码

        现代计算机起源于美国,所以一开始仅仅是让计算机识别英文字符,于是诞生ASCII码

        特点:

          只有英文字符与数字一一对应关系

          一个英文字符由8bit,即1byte表示,最多包含256个数字

         ⑵各国制定

        中国制定GBK来识别中文和英文字符,日本制定shift_jis,等等

        ⑶Unicode

        想让各种编码全部正常运行而不出现乱码,内存中必须有一种兼容万国的编码,并且该编码需要与其他编码有映射/转换关系,这就是Unicode特点

      3、编码与解码

        编码:encode

          由字符转换成内存中的Unicode,以及由Unicode转换成其他编码的过程,都称为编码

        解码:decode

          由内存中的Unicode转换成字符,以及其他编码转换成Unicode的过程,都称为解码

     

       4、utf-8

        Unicode因为是使用固定的两个字节长度存储,如果多国字符中有大量因为字符,使用Unicode会额外占用一倍空间,最致命的是io次数增加,程序运行速度变慢,所以需要将Unicode转化成另外一种精简的格式,这就是utf-8

        utf-8是不定长的:一个英文字符占1个字节,中文占3字节,生僻字占更多字节

        现在计算机都是内存用Unicode编码,硬盘用utf-8编码

    三、小结

        1、用户无论输入什么字符,存入内存,unicode都可以兼容

        2、硬盘中无论是什么编码的文件,读到内存,都可以兼容unicode

      数据的传输:

        优先以自己的本国字符编码进行传递

      (内存)unicode二进制字符 >>>  编码(encode)  >>> (硬盘)utf-8二进制字符

      (硬盘)utf-8二进制字符  >>>   解码(decode)  >>> (内存)unicode二进制字符

      保证不乱码核心:

        用什么编码存的数据,就用什么编码取

      python2 :

        默认的字符编码ascii码

      python3:

        默认的字符编码utf-8

      文件头:

        coding:utf-8

      pycharm默认的字符编码是:utf-8;windows操作系统默认字符编码:gbk

  • 相关阅读:
    软件工程实践项目课程的自我目标
    个人作业3——个人总结(Alpha阶段)
    结对编程2——单元测试
    个人作业2——英语学习APP案例分析
    结对编程1
    个人作业1——四则运算题目生成程序(基于控制台)
    关于在写5-3路上的一点趣事
    第一次课堂作业
    第四次作业
    面向对象程序设计课-第三次作业(改)
  • 原文地址:https://www.cnblogs.com/hexianshen/p/11813200.html
Copyright © 2020-2023  润新知