不同字符编码类型的总结

原文链接: https://yq.aliyun.com/articles/684583

1.ASCII

计算机一开始在美国使用,字符编码也只包括英文字母。ANSCII编码由一个字节表示所有符号。一个字节可以表示的所有可能是256(2的8次方)种,对于美国人来说,26个英文字母,加上常用的符号,也只是用了127个。如果大家都用英文,那这套编码完全够用。但是不同国家的文字不同,如果加上其他国家的语言符号,那一个字节是不够的,之后ASCII做出了改进,将256种情况剩余的可能用来表示其他字符。一直排到了第255种可能,从128到255表示的字符成为“扩展字符集”,然而,新增的字符并不能解决所有问题。

2.GB2312

计算机开始在我国普及时,ASCII中已经没有可以利用的字节状态来表示汉字。于是,我们将扩展字符集删除,将127后的字符状态重新编码。小于127的字符状态的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节称之为高字节,后面一个字节称之为低字节,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的”全角”字符,而原来在127号以下的那些就叫”半角”字符了。

后来GB2312也无法满足人们的需要,随后出现了GBK标准,再后来,还是不够用,于是出现了GB18030。这个标准几乎可以表示所有的中文字符,此标准在2006年5月1日被作为在中国境内所有软件产品支持的强制规格。

3.Unicode

不只是我国,很多国家都制定了相应的符合本国文化的字符编码标准。这些标准再本国内可以正常使用,但是如果是不同国家之间通过文本文件的交流,就很有可能导致乱码。这时,国际标准化组织(osi)出现了,OSI致力于将全世界所有的字符用统一的标准编码,消除不同国家之间交流的障碍。

OSI将所有字符用两个字节表示,包括ANCSI中的前127个字符,所以对于钱127个字符来说,本来8位就可以表示的字符现在用16位来表示,这其实是一种资源的浪费。

4.UTF-8

可以看出,Unicode虽然是一个很好的字符编码方式,但由于所有字符都用两个字节表示导致的资源的浪费,促使了UTF-8的出现,UTF-8编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。
UTF-8有如下特点:

<1> 前128个US-ASCII字符只需一个字节编码(与ANCSI相同)。

<2> 带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码。

<3> 其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码。

<4> 其他极少使用的Unicode辅助平面的字符使用四字节编码。

参考文献:
百度文库
字符集和字符编码/吴秦

你可能感兴趣的:(不同字符编码类型的总结)