字符编码
字符编码
什么是字符编码?
在了解字符编码之前我们先了解一下,这个东西在哪里使用!
字符编码只在文本文件和字符串当中使用,和图片文件、音频文件、视频文件无关
那么字符编码是什么呢?
打个比方哈:抗战时期大家都知道电台有个密码本,这边把命令用密码本翻译成密电码,那边收到密电码在根据同一本密码本就可以再翻译成密令了
那么我这边的字符编码就相当于“密码本”,我们先用人类可以读懂的语言编辑成文本再通过字符编码翻译成计算机可以识别的二进制,同样,计算机用字符编码把二进制数据转化和成我们人类看得懂的文件来展示给我们看
字符编码的发展史
三个阶段
1.一家独大
由于计算机是由美国人发明,早期也是在美国使用,所以美国人先定义了第一套字符编码表ASCII码:里面记录了英文字符与数字的对应关系
里面只要英文字符和数字字符
用一个字节来是对应关系
"""
所有的英文字符和符号加起来其实不超过127
之所以使用八位是为了后续发现新的语言
"""
必须记住的对应关系有以下两组
A-Z:65-90
a-z:97-122
2.群雄争霸
由于计算机的普遍,每个国家都定义了自己国家的一个字符编码对照表
中国人
为了能够让计算机识别中文 我们需要发明另外一套编码表
GBK码:记录了英文中文与数字的对应关系
对于英文还是使用一个字节
对应中文使用两个字节甚至更多字节
"""
两个字节其实也不够表示出所有的中文
遇到生僻字可能需要更多位来表示
"""
日本人
为了能够让计算机识别日文 也需要发明一套编码表
shift_JIS码:记录了日文英文与数字的对应关系
韩国人
为了能够让计算机识别韩文 也需要发明一套编码表
Euc_kr码:记录了韩文英文与数字的对应关系
3.天下一统
由于每个国家都使用自己的,导致各个国家的文件没办法相互传说使用所以产生了同一的字符编码表unicode(万国码)
unicode(万国码)
统一使用两个及以上字符记录字符与数字的对应关系
utf8(万国码的优化版本)
将英文还是用一个字节存储
将中文使用三个字节或更多字节存储
'''现在默认使用的编码是utf8'''
1.如何解决文件乱码的情况
文件当初以什么编码编的 打开的时候就以什么编码解
2.python解释器版本不同带来的编码差异
python2.X内部使用的编码默认是ASCII
# 文件头 coding:utf8 # 在python2中定义字符串前面要加一个小u s = u'你'
python3.X内部使用utf8
"""
自定义文件模板内容
file
settings
Editor
file and code templates
python script
"""
3.编码与解码
编码
将人类能够读懂的字符安装指定的编码转换成数字
解码
将数字按照指定的编码转换成人类能够读懂的字符
s = '每天不要想太多 学就完事了 干就完了 奥利给!!!' # 编码 res = s.encode('utf8') print(res, type(res)) # bytes 在python中直接将该类型看成二进制数据即可 # 解码 res1 = res.decode('utf8') print(res1)
关于字符编码就简单介绍到这里了
END