前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python学习(3):理解计算机中编码三、认识常见的计算机编码

Python学习(3):理解计算机中编码三、认识常见的计算机编码

作者头像
梧雨北辰
发布2018-06-07 10:49:46
7140
发布2018-06-07 10:49:46
举报

我们学习Python编程,经常对字符串这样的数据进行处理。我们也都知道计算机内部信息是采用二进制编码的,那么这其中的处理原理是什么呢?本篇就计算机中关于编码的知识进行总结。

一、为什么计算机内部信息采用二进制编码

计算机是由逻辑电路组成的,而逻辑电路只有接通与断开两个状态,正好可以对映二进制的“1”与“0”。这样的计算机设计在技术上会简单许多。

二、计算机编码的由来

计算机内部信息采用二进制编码,这决定了它只能直接识别0和1。我们所有各类型数据也都需要被转换为二进制0和1的序列存放在计算机中的。但是这样就产生了问题,对于一个很长的二进制序列,我们很难理解它的含义。

因此,我们可以规定每个字符的二进制序列,并把它存在计算机内,当需要将二进制位转换成我们能看懂的字符数据时,让计算机去截取二进制位查找对应的表,翻译成我们看的懂的数据。这种规定字符的二进制序列的做法就是一种编码行为,让计算机翻译就是一种解码行为。

这样也就产生了各种我们常见的计算机编码,如:ASCll编码、UTF-8编码、unicode编码等。

三、认识常见的计算机编码

1.ASCll编码

计算机是由美国人发明的,他们设计的Ascll编码是基于罗马字母表的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。英语只有26个英文字母,所以ascll编码只用8位二进制就表示了所有他们需要的字符。ASClll也是现今最通用的单字节编码系统。但是我们的汉字有几万个之多,ASCll编码并不能完全适用,所以后来我们也创造了适合中文的编码方式。

ASCll编码分布图.png

在计算机的存储中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

2.ISO 8859-1/Windows-1252

ISO 8859-1编码: ASCll编码的一个字节并未用完,后来的欧洲国家为了增加它们经常使用的字符,就在原ASCll编码的基础上扩充进而创造了ISO 8859-1编码,又称西欧语言。

Windows-1252编码: Windows-1252编码是ISO-8859-1编码的超集,现在的HTML5规范中就要求 ISO-8859-1 的文档实际上用 Windows-1252 编码进行分析。

3.GB2312编码(简体中文)

汉字众多,一个字节长度的编码显然不适合,所以我国在1981年5月1日开始实施的一套国家标准GB2312,适用于汉字处理、汉字通信等系统之间的信息交换。

GB2312使用两个字节来表示汉字。小于127的依然表示原来的字符(也就是该字节最高位为0),当计算机遇到两个大于127的字节时候(也就是两个字节的最高位都是1),就一次性读取两个字节,将它解码成一个汉字。 GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

4.GBK与GB18030

GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。但是对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。

GBK:向下兼容GB2312,增加新的汉字,共收录了21003个汉字。 GB18030:再次对GBK的扩充,增加了日韩和少数民族的字符编码。

5.unicode编码

如果每个国家都按照自己的标准编码字符集,就会对编码不同的两个国家的交流造成很困难。为了统一所有文字的编码,Unicode应运而生。

但是,UNicode仅仅只是一个字符集,就是为每个字符规定一个用来表示该字符的二进制数字,至于这个二进制代码如何存储则没有任何规定。试想,如果按照汉字所需的2到4个字节来编码,那么英文文档的大小也就大出了1到3倍。

为了解决Unicode编码的问题,UTT-8和UTF-16以及UTF-32出现了。 UTF-8是目前互联网上使用最广泛的一种 Unicode 编码方式,它的最大特点就是可变长。它可以使用 1 - 4 个字节表示一个字符,根据字符的不同变换长度

UTF-16编码介于 UTF-32 与 UTF-8 之间,同时结合了定长和变长两种编码方法的特点。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.06.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、为什么计算机内部信息采用二进制编码
  • 二、计算机编码的由来
  • 三、认识常见的计算机编码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档