计算机编码发展历史和编码方式

编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码。
用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。
编码在电子计算机、电视、遥控和通讯等方面广泛使用。
解码,是编码的逆过程。

为什么出现多种编码?

相信计算机专业的都知道,所有的数据(文本,音频,视频等等)在计算机内部都是以二进制形式来表示的。而计算机内部为什么采用二进制则是由硬件决定的(计算机采用了具有两种稳定状态的二值电路)。这样,就引出一个问题:
我们人类不适合直接看二进制。
因此,需要用一种方法,将二进制转为我们能看懂的东西。编码就应运而生了。

编码发展历史

第一阶段:
在计算机中,所有的数据只可能是0或者1(用高电平和低电平分别表示1和0),那么我们通常看到的字符也就只能用0和1来表示。于是科学家们(这里指的是美国的科学家)就想出一个办法,把一个特定的数字对应一个特定的字母进行存储和传输,比如我需要存储字母a,那么我存入一个数字97(即在计算机中存入二进制(01100001),这个过程叫做编码(encode),而我们在读取数据的时候,当遇到97时,我们就让计算机显示字母a,这个过程叫做解码(decode)。
这里你应该知道:

  • 计算机看懂的东西我们看不懂,我们看懂的东西,计算机看不懂。

把计算机看懂的东西(二进制(01100001))变成我们看懂的东西(数字97,也就是a),这个过程叫解码(decode)
把我们看懂的东西(数字97,也就是a)变成计算机看懂的东西(二进制(01100001)),这个过程叫做编码(encode)
为了大家在数据传输的时候不至于产生误会,那么我们需要让所有的人都使用数字97来代表字母a,所以需要制定一份标准(即码表),最开始的这个标准叫做ASCII码表。
ASCII码的实现方式:
最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255)。
由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里(即用一个字节的后七位),也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。

第二阶段:
随着发展,计算机开始普及,当计算机流传到欧洲时,问题再次出现,原本的ASCII编码只能解决美国人的编码问题,无法将欧洲的文字表示出来。于是乎,欧洲人就把ASCII码中没用到的第一位给用了,即:

  1. ASCII码用一个字节的后七位,表示范围是0-127;
  2. 欧洲人把这个字节的第一位也用了,表示范围0-255。除去原本的0-127,剩下128-255:128-159之间为控制字符,160-255位文字符号,其中包括了西欧语言、希腊语、泰语、阿拉伯语、希伯来语。砖家们决定把他们的编码名称叫做Latin1,后面由于欧洲统一制定ISO标准,所以又有了一个ISO的名称,即ISO-8859-1。

第三阶段:
计算机技术当然也传到了亚洲大地,比如中国。原本的一个字节的8个位全都用完了,但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
问题又来了:

  • 你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
到了这里:已经知道的编码方式主要有两种:ASCIIUnicode
现在,捋(lǚ)一捋ASCII编码和Unicode编码的区别:

  1. ASCII编码是1个字节,而Unicode编码通常是2个字节。(如果要用到非常偏僻的字符,就需要4个字节)
  2. 字母A用ASCII编码是十进制的65,二进制的01000001;
  3. 字符'0'用ASCII编码是十进制的48,二进制的00110000,注意字符'0'和整数0是不同的;
  4. 汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。

你可以猜测,如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001。
新的问题又出现了:

  • 如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。

字符ASCIIUnicodeUTF-8
A0100000100000000 0100000101000001
x01001110 0010110111100100 10111000 10101101

从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

ASCII,Unicode,utf-8之间的关系

看完上面的东西,可能有点乱,我这里简单总结一下ASCII,Unicode,utf-8之间的关系:

  • ASCII是计算机刚刚起步的时候用得编码方式,特点是可以表示的字符特别少,但简单易用。
  • Unicode是随着计算机发展,ASCII已经无法表示世界各国这么多文字而出现的一个新的编码方式,优点是编码快速,缺点是占用内存大。(如果你的文本全都是英语,如果用Unicode时,每个字符占用两个字节。而用ASCII每个字符只占用一个字节);
  • 为了解决Unicode的内存占用大问题,出现了utf-8,utf-8可以根据字符的类型,自动选择最优编码。但缺点是编码速度慢。

所以有了令人容易搞混的问题出现:

  • 什么时候用utf-8(这里utf-8已经包括ASCII,ASCII编码实际上可以被看成是UTF-8编码的一部分)编码方式?什么时候用Unicode编码方式?

什么时候用utf-8编码?
答案很显然:对内存消耗要求高的,对速度要求不高的场景下用utf-8。(注意:这里的速度是指cpu运算速度)
那你就想啊,什么时候对内存消耗要求高?很容易地就想到当我们要保存在硬盘的时候肯定是想占用空间越少越好啊,当我们在网络上传输肯定也想占用空间越少越好啊,所以,当我们的数据保存在硬盘的时候,当我们数据要在网络传输的时候,用得就是utf-8编码。

什么时候用Unicode?
答案显然:对速度要求特别高的,相对之下占用空间大小可以稍微妥协的场景下用Unicode编码。
我们知道,数据想被处理,首先得加载都内存上,这样,cpu才能以非常惊人的速度再内存上获取要处理的数据。这样,我们就轻易知道,当数据被加载到内存上时,在内存中的编码方式是Unicode。
我们来个总结:
1.我们平时电脑磁盘中的一个文件(abc.txt)其实是以utf-8编码方式存储的,当我们打开这个文件时,这个文件在加载到内存的时候会转变为Unicode编码方式。

2.浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器(所以你看到很多网页的源码上会有类似<meta charset="UTF-8" />的信息,表示该网页正是用的UTF-8编码。):

web-utf-8

参考:https://www.cnblogs.com/busui/p/9340339.html

下篇文件主要介绍一下python3 中的编码和解码相关内容

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第1章 计算机网络基础知识  1.1 计算机网络的产生与发展  1.2 计算机网络概述  1.2.1 计算机网络的基本概念  1.2.2 通信子网和资源子网  1.3 计算机网络的功能  1.4 计算机网络的分类和拓扑结构  1.4.1 计算机网络的分类  1.4.2 计算机网络的拓扑结构  1.5 计算机网络的应用  小结  习题1  第2章 数据通信技术  2.1 数据通信的基本概念  2.1.1 信息、数据与信号  2.1.2 模拟信号与数字信号  2.1.3 基带信号与宽带信号  2.1.4 信道及信道的分类  2.1.5 数据通信的技术指标  2.1.6 通信方式  2.2 传输介质的主要特性和应用  2.2.1 传输介质的主要类型  2.2.2 双绞线  2.2.3 同轴电缆  2.2.4 光纤  2.2.5 双绞线、同轴电缆与光纤的性能比较  2.3 无线与卫星通信技术  2.3.1 电磁波谱  2.3.2 无线通信  2.3.3 微波通信  2.3.4 卫星通信  2.4 数据交换技术  2.4.1 电路交换  2.4.2 存储转发交换  2.5 数据传输技术  2.5.1 基带传输技术  2.5.2 频带传输技术  2.5.3 多路复用技术  2.6 数据编码技术  2.6.1 数据编码的类型  2.6.2 数字数据的模拟信号编码  2.6.3 数字数据的数字信号编码  2.6.4 脉冲编码调制  2.7 差错控制技术  2.7.1 差错产生的原因与差错类型  2.7.2 误码率的定义  2.7.3 差错的控制  小结  习题2  第3章 计算机网络体系结构与协议  3.1 网络体系结构与协议概述  3.1.1 网络体系结构的概念  3.1.2 网络协议的概念  3.1.3 网络协议的分层  3.1.4 其他相关概念  3.2 OSI参考模型  3.2.1 OSI参考模型的概念  3.2.2 OSI参考模型各层的功能  3.2.3 OSI参考模型中的数据传输过程  3.3 TCP/IP参考模型  3.3.1 TCP/IP概述  3.3.2 TCP/IP参考模型各层的功能  3.4 OSI参考模型与TCP/IP参考模型  3.4.1 两种模型的比较  3.4.2 OSI参考模型的缺点  3.4.3 TCP/IP参考模型的缺点  3.4.4 网络参考模型的建议  小结  习题3  第4章 局域网  4.1 局域网概述  4.2 局域网的特点及其基本组成  4.3 局域网的主要技术  4.3.1 局域网的传输介质  4.3.2 局域网的拓扑结构  4.3.3 介质访问控制方法  4.4 局域网体系结构与IEEE 802标准  4.4.1 局域网参考模型  4.4.2 IEEE 802局域网标准  4.5 局域网组网技术  4.5.1 传统以太网  4.5.2 IBM令牌环网  4.5.3 交换式以太网  4.6 快速网络技术  4.6.1 快速以太网组网技术  4.6.2 吉比特以太网组网技术  4.6.3 ATM技术  4.7 VLAN  4.7.1 VLAN概述  4.7.2 VLAN的组网方法  4.8 WLAN  4.8.1 WLAN概述  4.8.2 WLAN的实现  4.8.3 WLAN组网实例——家庭无线局域网的组建  小结  习题4  第5章 广域网接入技术  5.1 广域网概述  5.2 常见的广域网接入技术  5.2.1 数字数据网(DDN)  5.2.2 综合业务数字网(ISDN)  5.2.3 宽带综合业务数字网(B-ISDN)  5.2.4 分组交换数据网(PSDN)  5.2.5 帧中继(Frame Relay)  5.2.6 数字用户线路xDSL  小结  习题5  第6章 网络互联技术  6.1 网络互联的基本概念  6.1.1 网络互联概述  6.1.2 网络互联的要求  6.2 网络互联的类型和层次  6.2.1 网络互联的类型  6.2.2 网络互联的层次  6.3 典型网络互连设备  6.3.1 中继器  6.3.2 网桥  6.3.3 网关  6.3.4 路由器  6.4 路由协议  6.4.1 路由信息协议(RIP)  6.4.2 内部路由协议(OSPF)  6.4.3 外部路由协议(BGP)  6.5 路由器的基本配置  6.5.1 路由器的接口  6.5.2 路由器的配置方法  小结  习题6  第7章 Internet基础知识  7.1 Internet的产生和发展  7.1.1 ARPANET的诞生  7.1.2 NSFNET的建立  7.1.3 全球范围Internet的形成与发展  7.2 Internet概述  7.2.1 Internet的基本概念  7.2.2 Internet的特点  7.3 Internet的主要功能与服务  7.3.1 Internet的主要功能  7.3.2 Internet的主要服务  7.4 Internet的结构  7.4.1 Internet的物理结构  7.4.2 Internet协议结构与TCP/IP  7.4.3 客户机/服务器的工作模式  7.5 Internet地址结构  7.5.1 IP地址概述  7.5.2 IP地址的组成与分类  7.5.3 特殊类型的IP地址  7.5.4 IP地址和物理地址的转换  7.6 子网和子网掩码  7.6.1 子网  7.6.2 子网掩码  7.6.3 A类、B类、C类IP地址的标准子网掩码  7.6.4 子网掩码的确定  7.7 域名系统  7.7.1 域名系统的层次命名机构  7.7.2 域名的表示方式  7.7.3 域名服务器和域名的解析过程  7.8 IPv4的应用极其局限性  7.8.1 什么是IPv4  7.8.2 IPv4的应用  7.8.3 IPv4的局限性  7.9 IPv6简介  7.9.1 IPv6的发展历史  7.9.2 IPv4的缺点及IPv6的技术新特性  7.9.3 IPv4与IPv6的共存局面  7.9.4 从IPv4过渡到IPv6的方案  7.9.5 IPv6的应用前景  小结  习题7  第8章 Internet接入技术  8.1 Internet接入概述  8.1.1 接入到Internet的主要方式  8.1.2 ISP  8.2 电话拨号接入Internet  8.2.1 SLIP/PPP概述  8.2.2 Winsock概述  8.3 局域网接入Internet  8.4 ADSL接入技术  8.4.1 ADSL概述  8.4.2 ADSL的主要特点  8.4.3 ADSL的安装  8.4.4 PPP与PPPoE  8.5 Cable Modem接入技术  8.5.1 CATV和HFC  8.5.2 Cable Modem概述  8.5.3 Cable Modem的主要特点  8.6 光纤接入技术  8.6.1 光纤接入技术概述  8.6.2 光纤接入的主要特点  8.7 无线接入技术  8.7.1 无线接入概述  8.7.2 WAP简介  8.7.3 当今流行的无线接入技术  8.8 连通测试  小结  习题8  第9章 Internet的应用  9.1 Internet应用于家庭  9.1.1 家庭用户连入Internet  9.1.2 使用浏览器浏览Internet  9.1.3 家庭娱乐  9.2 Internet应用于电子商务  9.2.1 电子商务及其起源  9.2.2 电子商务的特点  9.2.3 电子商务的内容  9.3 Internet应用所带来的社会问题  9.4 Internet应用的发展趋势与研究热点  小结  习题9  第10章 移动IP与下一代Internet  10.1 移动IP技术  10.1.1 移动IP技术的概念  10.1.2 与移动IP技术相关的几个重要术语  10.1.3 移动IP的工作原理  10.1.4 移动IP技术发展的3个阶段  10.2 第三代Internet与中国  10.2.1 什么是第三代Internet  10.2.2 第三代Internet的主要特点  10.2.3 中国的下一代互联网  小结  习题10  第11章 网络操作系统  11.1 网络操作系统概述  11.1.1 网络操作系统的基本概念  11.1.2 网络操作系统的基本功能  11.1.3 网络操作系统的发展  11.2 Windows NT Server操作系统  11.2.1 Windows NT Server 的发展  11.2.2 Windows NT Server的特点  11.3 Windows 2000 Server操作系统  11.3.1 Windows 2000 Server简介  11.3.2 Windows 2000 Server的特点  11.4 Windows Server 2003操作系统  11.4.1 Windows Server 2003简介  11.4.2 Windows Server 2003的特点  11.5 NetWare操作系统  11.5.1 NetWare操作系统的发展与组成  11.5.2 NetWare操作系统的特点  11.6 UNIX操作系统  11.6.1 UNIX操作系统的发展  11.6.2 UNIX操作系统的特点  11.7 Linux操作系统  11.7.1 Linux操作系统的发展  11.7.2 Linux操作系统的特点  小结  习题11  第12章 网络安全  12.1 网络安全的现状与重要性  12.2 防火墙技术  12.2.1 防火墙的基本概念  12.2.2 防火墙的主要类型  12.2.3 防火墙的主要产品  12.3 网络加密技术  12.3.1 网络加密的主要方式  12.3.2 网络加密算法  12.4 数字证书和数字签名  12.4.1 电子商务安全的现状  12.4.2 数字证书  12.4.3 数字签名  12.5 入侵检测技术  12.5.1 入侵检测的基本概念  12.5.2 入侵检测的分类  12.6 网络防病毒技术  12.6.1 计算机病毒  12.6.2 网络病毒的危害及感染网络病毒的主要原因  12.6.3 网络防病毒软件的应用  12.6.4 网络工作站防病毒的方法  12.7 网络安全技术的发展前景  12.7.1 网络加密技术的发展前景  12.7.2 入侵检测技术的发展趋势  12.7.3 IDS的应用前景  小结  习题12  第13章 网络管理  13.1 网络管理概述  13.1.1 网络管理的基本概念  13.1.2 网络管理体系结构  13.2 网络管理的功能  13.3 MIB  13.3.1 MIB的结构形式  13.3.2 MIB的访问方式  13.4 SNMP  13.4.1 SNMP的发展  13.4.2 SNMP的设计目标  13.4.3 SNMP的工作机制  13.5 网络管理工具  13.5.1 HP Open View  13.5.2 IBM TME 10 NetView  13.5.3 Cisco Works 2000  13.5.4 3Com Transcend  13.6 网络管理技术的发展趋势  小结  习题13  第14章 网络实验  14.1 实验1 理解网络的基本要素  14.2 实验2 双绞线的制作与应用  14.3 实验3 使用“超级终端”进行串行通信  14.4 实验4 网络连接性能的测试  14.5 实验5 组建一个小型对等网  14.6 实验6 WWW服务  14.7 实验7 使用电子邮件  14.8 实验8 DHCP服务器的安装与配置  14.9 实验9 DNS服务器的安装与配置 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值