zoukankan      html  css  js  c++  java
  • day008 字符编码之 字符编码 、Python2和Python3字符编码的区别

    计算机基础(掌握)

    启动应用程序的流程

    1. 双击qq
    2. 操作系统接受指令然后把该操作转化为0和1发送给CPU
    3. CPU接受指令然后把指令发送给内存
    4. 内存接受指令把指令发送给硬盘获取数据
    5. qq在内存中运行

    文本编辑器存取文件的原理

    1. 在文本编辑器中按下键盘中j的时候
    2. 文本编辑器和操作系统交互,把这个按下j的指令转化为0和1
    3. 操作系统发送治指令给CPU
    4. CPU把这个0和1的指令 转化为 j
    5. 然后再由显示器显示

    期间发生的过程,我们称之为字符编码

    Python解释器的原理

    1. 启动python解释器,python解释器相当于一个文本编辑器
    2. 打开文件,读出文件的内容,pthon解释器相当于一个文本编辑器。
    3. python解释器解释name='nick',然后才有语法的概念

    Python解释器和文本编辑器的区别

    1. 都能干什么:
      1. 把硬盘中躺着的数据读入到内存中,并显示
    2. 不同:
      1. python解释器还会多执行解释的步骤

    字符编码发生在哪三个阶段

    1. 存 内存到硬盘
    2. 取 硬盘到内存
    3. python3解释器解释

    字符编码的发展史与分类

    1. 电脑是美国创造出来的,电脑只认识0和1,但是美国人想输入一个a字符进去,所以必须得建立一套字符编码,让00001111表示成a,建立一套ascii码表
    2. 但是其他国家也开始使用电脑了,ascii码表不能满足需求了,所以各个国家建立了自己字符编码表
    3. 中国的是gbk,日本的是ift,韩国的是uck,所以各个国家的码农都用自己国家的编码表写了各种各样的代码
    4. 突然某个韩国人想说某个日本人的代码是自己写的,但是吧日本人的代码放到自己电脑上运行会报错,以下就被揭穿了,所以这个韩国人站出来说,我要弄一套编码表,这个编码表不仅能兼容日本,还能兼容世界的,然后最终没能实现
    5. 突然有个超级英雄站出来说,我来帮你把,然后unicode横空出世,unicode能认识所有国家的字符,
    6. 然后可以使用unicode的编码保存到硬盘中去,但是发现unicode编码太浪费内存了,所以做出了一套精简的utf8编码
    7. 等哪一天硬盘中躺着的全是utf8的编码的代码,那么unicode就下岗了

    存的时候用什么编码,取得时候用什么编码 必考

    内存中的编码格式统一都是unicode

    从内存到硬盘 的过程,即unicode --> gbk 称为 编码 encode

    从硬盘到内存 的过程,即gbk --> unicode 称为 解码 decode

    Python2和Python3字符编码的区别

    Python2(了解)

    解释语法的时候,生成变量时会把这个字符丢入内存,这个时候会有两种情况,一种是str编码,一种是unicode编码

    str

    直接编码成gbk的形式

    unicode

    直接编码成unicode的形式

    Python3(掌握)

    当你打印的时候,他会自动把'上'的unicode的编码010101010110101011010101101010转成终端的编码

    pycharm 右下角控制的是你写入的代码字符以什么编码格式保存

    coding: utf-8 控制的是Python3作为文本编辑的时候以什么编码格式读取文本内容,python3默认是utf-8的形式读取字符

    python解释器解释语法

    解释定义变量的语法,会新开辟一块内存空间放入这个变量,然后这个变量在python3中以unicode的形式存储,如字符x = '中',被python3解释后再内存中会变成x=1010101010101100.理论上print(x)相当于输出1010101010101100,但是这个1010101010101100对于程序员来讲看不懂,所以python3创始人龟叔做了这个操作-把1010101010101100编码按终端的编码格式输出编码后的结果,如.

    解释定义变量的语法,会新开辟一块内存空间放入这个变量,然后假设这个变量在python3中以utf-8的形式存储,如字符x = '中',被python3解释后再内存中会变成x=000001101010.理论上print(x)相当于输出000001101010,但是这个000001101010对于程序员来讲看不懂,所以python3创始人龟叔做了这个操作-把000001101010编码按终端的编码格式输出编码后的结果,如.如果终端的编码为gbk,终端无法识别000001101010.所以新开辟空间放入变量的时候,就用unicode转换,则终端无论是什么形式的编码格式,都能够识别并打印.

  • 相关阅读:
    格式化你的git message
    git merge
    Git远程操作详解
    Limit
    EmailService
    RequestContextHolder getHttpServletRequest
    spring boot GlobalExceptionHandler @RestControllerAdvice @ExceptionHandler
    redis 的雪崩和穿透?
    FileUtil
    getWeekDay TimeUtil
  • 原文地址:https://www.cnblogs.com/chenych/p/10933303.html
Copyright © 2011-2022 走看看