计算机基础

启动应用程序

  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. OpenFlashChart的图片导出

    http://www.cnblogs.com/mcmurphy/archive/2012/10/15/2724894.html http://teethgrinder.co.uk/open-flash ...

  2. 黑马程序猿——JAVA基础——IO流

    ----------android培训.java培训.java学习型技术博客.期待与您交流!------------  一. 一.IO流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数 ...

  3. HR系统-人员申请单

    部门在人员缺失时,须要进行人员申请, 申请会涉及到单据的建立及审核.单据建立界面例如以下:

  4. 改动grub默认启动顺序

    grub如今有两个版本号,一个grub,一个grub2,两个版本号的操作不太一样. 装centos的朋友非常有可能是grub.我电脑装的是ubuntu14.04,为grub2.我演示grub2的过程. ...

  5. HttpClient的Post和Get訪问网页

    一.基础JAR包 Mavenproject下pom.xml需配置的jar包 <dependencies> <dependency> <groupId>junit&l ...

  6. LeetCode 237. Delete Node in a Linked List (在链表中删除一个点)

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  7. Python类私有方法的陷阱

    引言 Python不像C++.Java.C#等有明白的公共.私有或受保护的keyword来定义成员函数或属性,它使用约定的单下划线"_"和"__"双下划线作为函 ...

  8. iOS开发-植入广告(iAd, Admob实例)

    应用中植入广告是一种非常好的盈利手段. 以下介绍主流的两种方法.iAd, Admob 先mark一个非常具体的pdf.   http://pan.baidu.com/share/link?sharei ...

  9. C++之内部类(内部类就是外部类的友元类,单向友元。只是内部类比友元类多了一点权限)

    1. 内部类的概念 如果一个类定义在另一个类的内部,这个内部类就叫做内部类.注意此时这个内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去调用内部类.外部类对内部类没有任何优越的访问权限. ...

  10. MCU低功耗设计(三)产品

    关键词: 低功耗设计, 无线通信产品, LoRa长距离, Contiki系统, 能耗实时跟踪 引言: 能耗对电池供电的产品来说是一个重大问题.一旦电能耗尽设备将"罢工".在< ...