utf8与unicode,ascii码有什么区别和关系

您所在的位置:网站首页 b的ascii码是什么 utf8与unicode,ascii码有什么区别和关系

utf8与unicode,ascii码有什么区别和关系

2023-05-29 07:28| 来源: 网络整理| 查看: 265

    ASCII与Unicode都是是一种字符集,Unicode兼容了ASCII的字符集,它定义了每个字符的唯一编号,而UTF-8是一种编码方式,它将Unicode中的字符编码成字节序列以便存储和传输。

具体来说,Unicode定义了每个字符的唯一编号,而UTF-8则使用1到4个字节来表示这些编号。UTF-8编码方式可以在不同的平台和系统之间共享,并且可以在传输过程中自动检测和纠正错误。

Unicode,全称为Unicode标准(The Unicode Standard),其官方机构Unicode联盟所用的中文名称为统一码[1],又译作万国码、统一字元码、统一字符编码[2],是信息技术领域的业界标准,其整理、编码了世界上大部分的文字系统,使得电脑能以通用划一的字符集来处理和显示文字,不但减轻在不同编码系统间切换和转换的困扰,更提供了一种跨平台的乱码问题解决方案。

Unicode伴随着通用字符集ISO/IEC 10646的标准而发展,同时也以书本的形式[3]对外发表。Unicode至今仍在不断增修,每个新版本都加入更多新的字符。目前最新的版本为2022年9月公布的15.0.0[4],已经收录超过14万个字符(第十万个字符在2005年获采纳)。

Unicode最普遍的编码格式是和ASCII兼容的UTF-8,以及和UCS-2兼容的UTF-16。

具体举例:

例如ASCII 中的  A :

对应10进制:和二进制

65

01000001

如果unicode放数据就是这样的:

00000000 00000000 00000000 01000001

那么其中4个字节,只有1个字节有有效内容,另外三个字节被白白浪费了。因此utf-8的编码方式就可以很好的节约空间:

utf8编码规则:

编码规则

对于UTF-8编码中的任意字节B,如果B的第一位为0,则B独立的表示一个字符(ASCII码);

如果B的第一位为1,第二位为0,则B为一个多字节字符中的一个字节(非ASCII字符);

如果B的前两位为1,第三位为0,则B为两个字节表示的字符中的第一个字节;

如果B的前三位为1,第四位为0,则B为三个字节表示的字符中的第一个字节;

如果B的前四位为1,第五位为0,则B为四个字节表示的字符中的第一个字节;

举例我们在golang中打印 我 字对应的 unicode 和 utf8编码后的样子:

其中utf8就是用3个字节,按照 高位 1110开头,后面两个字节 按照10开头存储的unicode中的“我”字符对应的utf8编码;

那么看到这里 大家理解了吗?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3