字符编码与文件处理之字符编码

引入

字符串类型,文本文件类型内容都是由字符串组成的,但凡涉及到字符的存取,都需要考虑字符编码的问题。

字符编码的这个知识点的典型特征就是理论多,结论少,但对于开发而言只需要记住揭露即可,下面来让我们来一点点的介绍

知识储备

三大核心硬件

所有软件都是运行硬件之上的,与运行软件相关的三大核心硬件为cpu,内存,硬盘,我们需要明确三点、

1.软件运行前,软件的代码及其相关数据都是存放于硬盘中的

2.任何软件的启动都是将数据从硬盘中读入内存,再由cpu从内存中取出指令并执行

3.软件运行过程中产生的数据都是最先存放在内存之中的,想要永久保存产生的数据,需要将产生的数据写入硬盘

文本编辑器读取文件内容的流程

阶段1:启动一个文件编辑器

阶段2:文件编辑器会将文件内容从硬盘读入内存

阶段3:文本编辑器会将刚刚读入内存中的内容显示到屏幕上

字符编码介绍

字符编码的前提:它只跟字符类型和文本类型相关,跟视频文件,音频文件,图片文件等无关

计算机内部只认识二进制,计算机之所以能够认识各种各样的字符,那是因为计算机内部维护着一张字符编码表

字符编码表:一些字符和数字之间的对应关系

字符编码的发展史

阶段一:一家独大

计算机最开始是美国人研究的,他们想让计算机能够识别英文字符,于是产生了ASCII表

ASCII表的特点:

1.只有英文字符和数字的一一对应关系

2.一个英文字符对应1Bytes,1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符

asiii.jpg

需要记忆的ASCII表:

A-Z: 65-96

a-z:97-

0-9:48-

阶段二:群雄割据

为了让计算机能够识别中文和英文,中国人定制了GBK

GBK表的特点:

1.它的内部记录了英文,中文和数字之间的对应关系

2.一个英文字符对应1Bytes

  一个中文字符对应2Byte(16位)

每个国家都各自的字符,为让计算机能够识别自己国家的字符外加英文字符,各个国家都制定了自

各个国家都制定了自己的字符编码表

Shift_JIS表的特点:

只有日文字符、英文字符与数字的一一对应关系

Euc-kr表的特点:只有韩文字符、英文字符与数字的一一对应关系

阶段三:天下一统

为了让全世界的人都能够统一使用计算机识别全世界的语言,把字符编码表统一了这就产生了unicode(万国码),unicode统一使用的是2个字节来保存字符

如果是英文字符----》1个字节保存一个英文字符------》万国码中使用2个字节保存英文字符----》

这就造成了空间的浪费

 优化

从内存中得万国码到硬盘中得utf-8字符

utf-8就是大家统一使用的一种编码

1.它统一使用一个字节来保存英文字符

2.统一使用三个字节来保存中文字符

utf系列:

utf-8

utf-16

utf8mb4:能够存储表情


字符编码的实战

1.如何解决乱码的问题?

在写文件时使用的是什么编码,那么你打开的时候就使用对应编码解码就行

2.Python解释器版本不同代码的编码问问题

在python2中使用的编码表不是utf-8,而是ASCII码表

在python2中如何定义中文字符

 s = u'你好'
 print s

3.如何编码和解码

编码:把人类能够读懂的字符转换为计算机能够识别的数字(二进制)

 # 编码
  res = '趁年轻,学技能,养活自己'
  res = '趁年轻'
  print(res.encode('utf-8')) # b'\xe8\xb6\x81\xe5\xb9\xb4\xe8\xbd\xbb' bytes

解码:把计算机能够读懂的语言转换为人能够读懂的字符

 # 解码
    res1 = res.encode('utf-8')
    print(res1.decode('utf-8'))  # 趁年轻

如果遇到解码问题的时候,你不指定使用什么编码进行解码,你就试:utf-8 gbk

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值