python字符编码

一.字符编码

发展历程

1.ASCII码

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

每8个bit组成一个字节,这是计算机中最小的存储单位

bit           位,计算机中最小的表示单位
8bit = 1bytes 字节,最小的存储单位,1bytes缩写为1B
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
1EB=1024PB
1ZB=1024EB
1YB=1024ZB
1BB=1024YB
2.GBK和GB2312
显然,对于我们来说能在计算机中显示中文字符是至关重要的,然而刚学习的ASCII表里连一个偏旁部首也没有。所以我们还需要一张关于中文和数字对应的关系表。

3.Unicode
为了避免各国都用不同的标准,防止乱码的出现Unicode出现了,它把所有语言都整合到一起去了,但是缺点就是它比ASCII编程多了一倍的储存空间(通常需要两个字节)

4.UTF-8
对于通篇都是英文的文本来说,这种编码方式无疑是多了一倍的存储空间(二进制最终都是以电或者磁的方式存储到存储介质中的)
于是产生了UTF-8,对英文字符只用1Bytes表示,对中文字符用3Bytes

总结:
unicode:简单粗暴,通常字符都是2Bytes,优点是字符->数字的转换速度快,缺点是占用空间大
utf-8:精准,对不同的字符用不同的长度表示,优点是节省空间,缺点是:字符->数字的转换速度慢,因为每次都需要计算出字符需要多长的Bytes才能够准确表示

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。

关于字符编码的问题,很有点绕,这里有一个大佬写的一篇文章,通俗易懂,特此献上

 ##########编码回顾##########

 python2默认编码方式是ASCII不是UTF-8,需要在开头的地方写上#! -*- coding:  utf-8 -*-或者#! encoding:utf-8

 python3默认编码格式就是utf-8

原文地址:https://www.cnblogs.com/Xanderzyl/p/10235236.html