ASCII、Unicode 和 UTF-8 的关系是什么?

 我来答
白露饮尘霜17
2022-06-13 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6799
采纳率:100%
帮助的人:37.4万
展开全部
        因为通电的设备最初只有断电(0)跟通电(1)两种状态,所以计算机里面所有复杂的事情归根结底都是由0和1排列组合而成的,因此,要在计算机上显示文字,必须要让文字与相应的0和1(即二进制数)相对应起来才行。

        由于最初计算机是美国人发明的,所以最早的对应关系为:f(二进制数) = 英文字符 ,其中英文字符包含数字。这里的对应关系 f 被称为编码表(ASCII,1个字节)。但是随着计算机的普及,计算机开始被各个国家的人所使用,对于只能表示英文跟数字的 ASCII 并不能满足大家的需求,例如就不能显示中文、韩文和日文等其他国家的文字。于是我们中国自己制定了GB2312编码把中文加进ASCII码里面(意思是GB2312兼容ASCII的对应法则,GB2312只是在ASCII的基础上进行了扩展),与此同时,其他国家也这么干了,每个国家都有一套自己的编码,于是在多语言混合的文本中就会出现乱码的情况(因为国家与国家基本都不会相互兼容)。

        那为什么大家不制定一个统一的编码来兼容世界上所有的语言呢?因此 Unicode 便应运而生,它把所有的语言都统一到了一套编码里面,这样只要大家都用这套编码的画,就不会再存在乱码的情景了。

        但是随着 Unicode 加入的语言越来越多,编码所需的字节越来越多(4个字节),有时候一篇英文文献本来用 ASCII 存只需要1k,但是用 unicode 的话,就会增加到4k,这样在网络上传输造成很大的资源浪费,因此本着节约的精神出现了可变长的 UTF-8 编码,它即兼容 ASCII 和其他语言,也不会造成太多的空间浪费。

        现在存储的时候一般都会把文本保存成UTF-8的形式存储下来(因为这样比较省空间),但是在计算机内存中,也还是统一使用 unicode 编码,因为 unicode 为定长编码,对于定长编码 CPU 的处理效率更高。即计算机从硬盘读取文本,并将其编码格式 (UTF-8) 转换成 Unicode 到 CPU 进行处理,等到处理完毕之后,再将内存里面 Unicode 编码的文本转换成 UTF-8 存到硬盘中。

注:1 字节 = 8 位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式