有关于字符集的问题,什么是Unicode,什么是UTF-8

如题所述

Unicode是一个(编码字符集.n),它对应着一个专门为Unicode编码字符集收录字符的字库表。

一个Unicode编码对应着一个Unicode字库表中的字符,可以说一个Unicode编码就是一个字符在Unicode字库表中的序号【在字库表中排在第几个】。
(Unicode编码.n)是一个二进制数。

Unicode为了到达其包含全世界所有字符的目的,采用了多个字节表示一个字符的规则【四个字节】,一个字节八个位,一个位上可以有0和1两种状态,一个字节就可以有256状态,N个字节就可以256的N次方种状态,每一种状态对应一个二进制的数字,所以多个字节就可以表示更多的字符,进而使得字库表更大。

UTF-8是一种字符编码方案,它是对Unicode进行编码(也就是对二进制数字进行编码),字符编码方案将一个二进制数字映射成一个字节序列。

为什么要对Unicode进行再编码,因为Unicode是一个定长的(编码字符.n),这样的方式带来的麻烦就是:
假设二进制数值00000001是字符A的编码,它本身只需要一个字节就可以存储在计算机内,然而因为Unicode是定长4个字节,所以A得编码变成了00000000 00000000 00000000 00000001存储在计算机内需要四个字节,进而造成非常大的存储开销 ---- 假如一块硬盘本来可以四个字符A,变成了只能存一个字符A。
所以既要使用到Unicode的大的字库表,又要节省存储空间,就需要对Unicode再编码,且是根据(Unicode编码.n)内容 不定长编码 --- UTF-8是一种对(Unicode编码.n)的不定长字符编码方案。

UTF-8字符编码方案决定了(Unicode编码.n)在计算机内的存储方式。
(Unicode编码.n)经过UTF-8字符编码方案编码之后也可以看做是一个新的二进制数字,(通常用十六进制数字字符表示这个新的二进制的值,它们直接的关系是这个十六进制字符表示的值 等于 这个二进制数字的值)。
温馨提示:答案为网友推荐,仅供参考