day08-字符编码
目录
计算机基础
启动应用程序
- 双击qq
- 操作系统接受指令,然后把该操作转化为0和1发送给CPU
- CPU接受指令然后把指令发送给内存
- 内存接受指令把指令发送给硬盘获取数据
- qq在内存中运行
写文本的流程
- 在记事本中按下键盘j的时候
- 记事本和操作系统交互,把这个按下j的指令转化为0和1
- 操作系统发送指令给CPU
- CPU把这个0和1的指令转化为j
- 再由显示器显示
期间发生的转化过程我们称之为字符编码
Python解释器执行文件的原理
- 启动Python解释器,python解释器就相当于一个文本编辑器
- 打开文件读取文件的内容,从硬盘上将文件内容读入到内存中
- Python解释器解释内存中的代码,然后才有了python语法的概念
Python解释器与文本编辑器的区别
- 相同点:都是把硬盘中存着的数据读入到内存中,并显示
- 不同点:文本编辑器将文件内容读入到内存后,是为了显示或者编辑,而python解释器还会多执行解释的步骤
字符编码
字符编码发生在哪三个阶段
- 存:从内存到硬盘
- 取:从硬盘到内存
- python解释器器解释
字符编码发展史与分类
由于计算机是由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。最多只能用8位来表示(一个字节),即:2**8=256。所以,ASCII码最多只能表示256个符号
但是在处理数据时,不同的国家有不同的语言,所以中国人规定了自己的标准gb2312编码,规定了包含中文在内的字符与数字的对应关系。日本人也会在自己的程序中加入日文。
但是用多国语言编写的文档该用那种编码格式呢?都会出现乱码现象。所以迫切需要一个世界的标准(能包含全世界的语言)于是Unicode应运而生
但是发现unicode编码太浪费内存了,所以做出了一套精简的utf8编码,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。utf8的出现只是为了节省空间
总结
- 因此为避免乱码现象,在存的时候用什么编码,取得时候用什么编码
- 在内存中的编码格式统一都是unicode
- 从内存到硬盘存入的过程,即unicode --> gbk 称为 编码 encode
- 从硬盘到内存读取的过程,即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-字符编码的更多相关文章
- Day08字符编码
Day08: 知识储备: 硬盘:由硬盘加载到内存,cpu从内存中取 软件产生的数据都是先保存在内存中 文件,输入文字,保存到内存,内存是硬件,硬件只能保存2进制,所以需要转换 文本编辑器,输入文字的时 ...
- day08(字符编码,字符与字节,文件操作)
一,复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int: int('10') | int('-10') | int('0') | float(' ...
- 字符编码 + python2和python3的编码区别(day08整理)
目录 昨日回顾 二十三.元组内置方法 二十四.散列表 二十五.字典内置方法 二十六.集合内置方法 二十七.深浅拷贝 拷贝 浅拷贝 深拷贝 今日内容 二十八.字符编码 1.文本编辑器存储信息的过程 2. ...
- 员工管理系统+字符编码+Python代码文件操作
员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1 debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...
- Python遇到字符编码出问题的一个相对万能的办法
在使用Python做爬虫的过程中,经常遇到字符编码出问题的情况. UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' ...
- python学习笔记(基础一:'hello world'、变量、字符编码)
第一个python程序: Hello World程序 windows命令行中输入:python,进入python交互器,也可以称为解释器. print("Hello World!" ...
- Python学习Day2笔记(字符编码和函数)
1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一 ...
- mysql 5.5 修改字符编码
修改/etc/mysql/my.cnf 配置文件: 最后重启mysql 服务,再查看: 编码已经改好了,可以支持中文字符编码了.
- mysql命令行修改字符编码
1.修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2.创建数据库时,指定数据库的字符编码 mysql> create ...
- 关于Unicode,字符集,字符编码,每个程序员都应该知道的事
关于Unicode,字符集,字符编码,每个程序员都应该知道的事 作者:Jack47 李笑来的文章如何判断一个人是否聪明?中提到: 必要.清晰.且准确的概念,是一切思考的基石.所谓思考,很大程度上,就是 ...
随机推荐
- angularjs中比较实用的multipleselect选择框
一. HTML HTML中比较多逻辑代码,修改的时候要注意修改很多绑值的地方. <div class="form-group"> <label class=&qu ...
- Oracle Multitenant Environment (二) Purpose
Purpose of a Multitenant Environment A multitenant environment enables the central management of mul ...
- 你不知道的JavaScript--Item34 大白话解说Promise
去年6月份. ES2015正式公布(也就是ES6.ES6是它的乳名),当中Promise被列为正式规范.作为ES6中最重要的特性之中的一个,我们有必要掌握并理解透彻.本文将由浅到深,解说Promise ...
- 【Cocos2dx游戏开发】CCNotificationCenter传递消息和数据
在开发游戏的时候我们经常需要在层与层之间.场景与场景之间传递数据和消息,Cocos2dx框架应用观察者模式为我们封装了一个CCNotificationCenter类,也叫消息通知中心,它也是一个单例类 ...
- LeetCode 9. Palindrome Number (回文数字)
Determine whether an integer is a palindrome. Do this without extra space. 题目标签:Math 题目给了我们一个int x, ...
- 对Socket CAN的理解(4)——【Socket CAN接收数据流程】
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 如今我们来分析一下CAN总线的接收数据流程,对于网络设备.数据接收大体上採用中断+NAPI机制进行数据的接收.相同. ...
- 数据库html 数据的分句
Python 中文分句 - CSDN博客 https://blog.csdn.net/laoyaotask/article/details/9260263 # 设置分句的标志符号:可以根据实际需要进行 ...
- YTU 2723: 默认参数--求圆的面积
2723: 默认参数--求圆的面积 时间限制: 1 Sec 内存限制: 128 MB 提交: 206 解决: 150 题目描述 根据半径r求圆的面积, 如果不指定小数位数,输出结果默认保留两位小数 ...
- min-max容斥小结
https://www.zybuluo.com/ysner/note/1248287 定义 对于一个集合\(S\), \(\min(S)\)表示其第一个出现的元素(\(or\)最小的元素), \(\m ...
- bzoj3011
可并堆 复习一下可并堆 维护一个大跟堆,每次把节点儿子打上边权标记,然后合并,可并堆上维护一个size,每次把大于l的弹出,size就是答案 程序中那个d写l和r速度差不多,我写l是表示右儿子到u的最 ...