字符编码

字符编码:

字符:存储信息的东西
编码: 将一连串的字符串转化为字母或数字
信息的转化过程:
键盘-》发送电流 -----》主机(内存)接受电流 --》显示屏- 接受电流(化学反应)-----》图像界面

文本编辑器存储信息的过程:

文本编辑器 ---》写文件 ----》存储信息
1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失。
2.要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘上。
3.在我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都只是在编写一堆字符而已

字符编码发展史:

1.美国创造计算机,计算机只认识数字。
2.机械语言(0,1)---》(Ascll编码)--》字符
Ascll编码: 字符编码是将人类的字符编码成计算机能识别的数字,这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。-----美国的标准
3.各国创建各自的字符编码格式---》乱码
4.创建unicode-兼容各国的字符编码格式
5.unicode----->太占内存------》存储在内存内
6.---》utf-8,--->存储数据--》减小内存
Unicode能和硬盘中其他国家的二进制中的代码进行转换,但是UTF-8只是简化了代码的存储,它并不能与其他国家硬盘中的代码进行关系转换。总而言之只有Unicode编码才能运行其他国家硬盘中的代码,而UTF-8的代码无法进行该操作。

乱码分析:

文件从内存到硬盘的操作----》存文件
文件从硬盘到内存的的操作-》读文件

乱码情况:

1.存文件就已经乱码
2.存文件是不乱码而读文件是乱码

python2和python3的编码区别:

终端有一个特性:你的电脑是什么编码,就按照什么编码的来,windows终端是utf-8
python2有两种存储变量的形式,第一种:unicode;第二种:按照coding头来的
python3只有一种存储变量的形式,unicode
假设python2用utf8存储x='中文',当你print(x)的时候,终端接收gbk的变量x,但是windows终端编码是utf8,会乱码
假设python2用unicode存储,终端接受的是unicode,windows终端编码是utf8还是gbk重要吗?不会乱码=
import sys

sys.getdefaultencoding()
'utf-8'

---判断默认的编码方式

  • 阶段一:启动Python解释器,进行编码-----》错误会报编码错误--》添加coding: + gbk/utf-8--->定义编码格式
  • 阶段二:Python解释器此时就是一个文本编辑器,负责打开文件test.py,即从硬盘中读取test.py的内容到内存中-----报语法错误
  • 阶段三:读取已经加载到内存的代码(Unicode编码格式,进行编码),然后执行,执行过程中可能会开辟新的内存空间

总结:

1.保证不乱码的核心法则就是,字符编码按照什么标准而编码的,就要按照什么标准解码
2.内存中固定使用的就是Uncidoe编码,我们唯一能改变的就是存储到硬盘时使用的编码。
  • Unicode----->encode(编码)-------->gbk
  • Unicode<--------decode(解码)<----------gbk

转载于:https://www.cnblogs.com/shaozheng/p/11534074.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值