美文网首页
字符与编码:ASCII码、Unicode和UTF-8区别

字符与编码:ASCII码、Unicode和UTF-8区别

作者: 九楼记 | 来源:发表于2022-12-09 17:22 被阅读0次

计算机只能处理二进制数字, 如果要处理文本, 就必须建立字符和二进制字节序列之间的关系。

字符:各种文字、符号的总称。例如文字、标点、图形、数字、字母等等。

字符集:顾名思义,就是一定数量的字符组成的集合,字符集种类比较多,而且每个字符集包含的字符个数也不同,常见字符集主要有:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等,字符集为每一个【字符】分配一个唯一的 ID(学名为码位 / 码点 / Code Point)。

字符编码:将字符集中的每个字符映射为字节流的实现方案(编码方案),即属于将【码位】转换为字节序列的规则,便于计算机存储和传输;常见的字符编码有ASCII编码、UTF-8编码、GBK编码、Base64编码等。某种意义上来说,字符集与字符编码有种对应关系,例如 ASCII字符集对应有ASCII编码。

编码与解码:编码的过程是将字符转换成字节流,解码的过程是将字节流解析为字符。

ASCII字符集:

ASCII编码:(American Standard Code for Information Interchange) 美国信息交换标准码,是美国制定的单字节字符编码系统,作用于ASCII字符集。因为在英语中,128个符号就可以满足,所以一直将1个字节(8位)的最高位闲置(默认为0),其他7位用于编码;后来才扩展了最高位,共可以表示256个符号。例如:字符A,ASCII码是65(十进制),二进制是01000001,八进制是0101,十六进制是0x41。但是,即使256位,也是不够用的,因为世界上的国家和文字、符号太多了,于是就开始扩展,出现了Unicode字符集。

Unicode字符集:是一个符号集,包含了各国的符号、文字等,详细可查;它只规定了字符对应的二进制代码,却没有规定这个二进制代码应该如何存储。于是出现了Unicode字符集对应的编码方式,主要是utf-8,也有utf-16、utf-32等,但utf-8是在互联网上使用最广的一种Unicode的实现方式。utf-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,并且根据不同的符号需要而变化字节长度。

Unicode编码:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。所以对于英文字符,utf-8编码和ASCII码相同。
2)对于n字节的符号(n>1),第一个字节的前n位都为1,第n+1位为0,(其第一个字节从最高位开始,连续的二进制位为1的个数决定了其编码的字节数n),后面各字节的前两位一律为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

reference

[1] https://blog.csdn.net/weixin_42502742/article/details/124398640

相关文章

网友评论

      本文标题:字符与编码:ASCII码、Unicode和UTF-8区别

      本文链接:https://www.haomeiwen.com/subject/tugzfdtx.html