计算机基础

启动应用程序

  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. 打开文件读取文件的内容,从硬盘上将文件内容读入到内存中
  3. Python解释器解释内存中的代码,然后才有了python语法的概念

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

  • 相同点:都是把硬盘中存着的数据读入到内存中,并显示
  • 不同点:文本编辑器将文件内容读入到内存后,是为了显示或者编辑,而python解释器还会多执行解释的步骤

字符编码

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

  1. 存:从内存到硬盘
  2. 取:从硬盘到内存
  3. python解释器器解释

字符编码发展史与分类

由于计算机是由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。最多只能用8位来表示(一个字节),即:2**8=256。所以,ASCII码最多只能表示256个符号

但是在处理数据时,不同的国家有不同的语言,所以中国人规定了自己的标准gb2312编码,规定了包含中文在内的字符与数字的对应关系。日本人也会在自己的程序中加入日文。

但是用多国语言编写的文档该用那种编码格式呢?都会出现乱码现象。所以迫切需要一个世界的标准(能包含全世界的语言)于是Unicode应运而生

但是发现unicode编码太浪费内存了,所以做出了一套精简的utf8编码,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。utf8的出现只是为了节省空间

总结

  1. 因此为避免乱码现象,在存的时候用什么编码,取得时候用什么编码
  2. 在内存中的编码格式统一都是unicode
  3. 从内存到硬盘存入的过程,即unicode --> gbk 称为 编码 encode
  4. 从硬盘到内存读取的过程,即gbk --> unicode 称为 解码 decode

Python2与Python3解释器编码的区别

Python2解释器(了解)

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

  • str编码:直接编码成gbk的形式
  • unicode编码:直接编码成unicode的形式

Python3解释器

Python3中都是Unicode编码的

  • 解释定义变量的语法,会新开辟一块内存空间放入这个变量,然后这个变量在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转换,则终端无论是什么形式的编码格式,都能够识别并打印.

day08-字符编码的更多相关文章

  1. Day08字符编码

    Day08: 知识储备: 硬盘:由硬盘加载到内存,cpu从内存中取 软件产生的数据都是先保存在内存中 文件,输入文字,保存到内存,内存是硬件,硬件只能保存2进制,所以需要转换 文本编辑器,输入文字的时 ...

  2. day08(字符编码,字符与字节,文件操作)

    一,复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int: int('10') | int('-10') | int('0') | float(' ...

  3. 字符编码 + python2和python3的编码区别(day08整理)

    目录 昨日回顾 二十三.元组内置方法 二十四.散列表 二十五.字典内置方法 二十六.集合内置方法 二十七.深浅拷贝 拷贝 浅拷贝 深拷贝 今日内容 二十八.字符编码 1.文本编辑器存储信息的过程 2. ...

  4. 员工管理系统+字符编码+Python代码文件操作

    员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1  debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...

  5. Python遇到字符编码出问题的一个相对万能的办法

    在使用Python做爬虫的过程中,经常遇到字符编码出问题的情况. UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' ...

  6. python学习笔记(基础一:'hello world'、变量、字符编码)

    第一个python程序: Hello World程序 windows命令行中输入:python,进入python交互器,也可以称为解释器. print("Hello World!" ...

  7. Python学习Day2笔记(字符编码和函数)

    1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一 ...

  8. mysql 5.5 修改字符编码

    修改/etc/mysql/my.cnf 配置文件: 最后重启mysql 服务,再查看: 编码已经改好了,可以支持中文字符编码了.

  9. mysql命令行修改字符编码

    1.修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2.创建数据库时,指定数据库的字符编码 mysql> create ...

  10. 关于Unicode,字符集,字符编码,每个程序员都应该知道的事

    关于Unicode,字符集,字符编码,每个程序员都应该知道的事 作者:Jack47 李笑来的文章如何判断一个人是否聪明?中提到: 必要.清晰.且准确的概念,是一切思考的基石.所谓思考,很大程度上,就是 ...

随机推荐

  1. angularjs中比较实用的multipleselect选择框

    一. HTML HTML中比较多逻辑代码,修改的时候要注意修改很多绑值的地方. <div class="form-group"> <label class=&qu ...

  2. Oracle Multitenant Environment (二) Purpose

    Purpose of a Multitenant Environment A multitenant environment enables the central management of mul ...

  3. 你不知道的JavaScript--Item34 大白话解说Promise

    去年6月份. ES2015正式公布(也就是ES6.ES6是它的乳名),当中Promise被列为正式规范.作为ES6中最重要的特性之中的一个,我们有必要掌握并理解透彻.本文将由浅到深,解说Promise ...

  4. 【Cocos2dx游戏开发】CCNotificationCenter传递消息和数据

    在开发游戏的时候我们经常需要在层与层之间.场景与场景之间传递数据和消息,Cocos2dx框架应用观察者模式为我们封装了一个CCNotificationCenter类,也叫消息通知中心,它也是一个单例类 ...

  5. LeetCode 9. Palindrome Number (回文数字)

    Determine whether an integer is a palindrome. Do this without extra space. 题目标签:Math 题目给了我们一个int x, ...

  6. 对Socket CAN的理解(4)——【Socket CAN接收数据流程】

    转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 如今我们来分析一下CAN总线的接收数据流程,对于网络设备.数据接收大体上採用中断+NAPI机制进行数据的接收.相同. ...

  7. 数据库html 数据的分句

    Python 中文分句 - CSDN博客 https://blog.csdn.net/laoyaotask/article/details/9260263 # 设置分句的标志符号:可以根据实际需要进行 ...

  8. YTU 2723: 默认参数--求圆的面积

    2723: 默认参数--求圆的面积 时间限制: 1 Sec  内存限制: 128 MB 提交: 206  解决: 150 题目描述 根据半径r求圆的面积, 如果不指定小数位数,输出结果默认保留两位小数 ...

  9. min-max容斥小结

    https://www.zybuluo.com/ysner/note/1248287 定义 对于一个集合\(S\), \(\min(S)\)表示其第一个出现的元素(\(or\)最小的元素), \(\m ...

  10. bzoj3011

    可并堆 复习一下可并堆 维护一个大跟堆,每次把节点儿子打上边权标记,然后合并,可并堆上维护一个size,每次把大于l的弹出,size就是答案 程序中那个d写l和r速度差不多,我写l是表示右儿子到u的最 ...