公告:欢迎来到极梦小屋!本站资源全部可以免费下载,积分都是可以免费获取的!

Python全栈开发:初识编码

释放双眼,带上耳机,听听看~!

计算机中存储的所有数据(文本字符、视频、音频、软件、图片等等)在计算机内部都是以一串0和1的形式来表示的,也就是二进制。

在二进制中每个0或1即表示一个位(bit),位是数据存储的最小单位,其中8位等于1个字节(Byte)。

字节主要是方便存储和网络传输,而字符是用来显示的,方便阅读,一个中文、一个数字、一个字母、一个标点符号都可以被称为是一个字符。

ascii编码

由于最早计算机是由美国人发明的,所以在计算机最开始的时候计算机内部只能识别英文字母、数字和一些符号。

比如“h”经过编码后存储到计算机硬盘上就是“0110 1000”占用一个字节的长度,既然能够进行编码也就说明能够解码,而“0110 1000”解码后就是“h”。

两者是一个可逆的过程,编码是为了存储传输,而解码是为了方便阅读。

由于编码和解码是需要一种对应关系的,而最初的这种对应关系就是ascii码对照表。

其中ascii码中包含了26个英文字母(大小写),10个数字和一些标点符号,这些字符加起来也不过100多个字符,在计算机中用一个字节的存储空间来表示一个字符完全是绰绰有余的,因为一个字节相当于8位,而8位可以表示265个字符。

由于ascii码对照表中没有汉字,所以汉字通过ascii码的方式编码或解码的话就会出现乱码。

Unicode编码

由于计算机慢慢的普及,所以又出现了万国码(Unicodo),Unicodo是为了解决传统编码的局限而产生的,它包含了世界各地的文字,如中文、日文、韩文等等。

而Unicode的一个缺点就是1个字符需要2-4个字节,16位-32位进行表示。

比如“h”通过ascii编码后占用的硬盘空间是一个字节,而通过Unicode编码后就是2个字节,所以说在硬盘存储的时候Unicode更耗费硬盘空间。

utf-8编码

由于Unicode比较浪费存储空间,就对Unicode进行了优化,所以应运而生就出现了utf-8编码。

utf-8编码是一种变长的字符编码,可以根据具体情况用1-4个字节来表示一个字符,优先使用1个字符、无法满足时则增加一个字节,最多4个字节。英文占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个。

Python解释器的默认编码

Python 2.x 解释器 默认的编码是ascii码,Python 3 解释器 默认的编码是UTF-8。

由于Python 2.x 解释器 默认的编码是ascii码,所以遇到汉字的时候会出现乱码或报错,如果遇到这种情况可以通过指定解释器编码的方式来解决。

可以在头文件中添加如下代码,这段代码的意思就是告诉Python解释器,应该用utf-8编码来解释该py文件。

主要是 Python 2.x 中需要这行代码,Python 3.x 中如果没有这行代码,遇到汉字也不会报错。

# -*- coding: utf-8 -*-

示例:

# -*- coding: utf-8 -*-
print("你好")

文件编码

建议在编写文件时,保存文件要用utf-8编码。

注意:以什么编码保存的,就要用什么编码方式打开,否则也会出现乱码。

给TA打赏
共{{data.count}}人
人已打赏
Python

Python全栈开发:Python解释器

2019-10-29 22:46:25

Python

Python全栈开发:基本的数据类型

2019-11-9 22:34:33

个人中心
今日签到
有新私信 私信列表
搜索