根据维基百科UTF-8页面,我从人们那里听到了相互矛盾的观点。

它们是一样的,不是吗?有人能澄清一下吗?


当前回答

Unicode只定义码位,即代表一个字符的数字。如何在内存中存储这些代码点取决于所使用的编码。UTF-8是编码Unicode字符的一种方式。

其他回答

如果我可以总结一下我从这篇文章中收集到的信息:

Unicode将字符分配给序数(十进制形式)。(这些数字被称为码位。)

à -> 224

UTF-8是一种将这些序数(十进制形式)“转换”为二进制表示的编码。

224 -> 11000011 10100000

注意,我们讨论的是224的二进制表示,而不是它的二进制形式,即0b11100000。

作为一个直截了当的简单回答:

Unicode是一种表示多种人类语言字符的标准。 UTF-8是一种编码Unicode字符的方法。


是的:我故意忽略了UTF-8的内部工作原理。

1. Unicode

有很多世界各地的字符,如“$,& h,, t, ?,张,1 = +……”。

然后出现了一个致力于这些角色的组织,

他们制定了统一码标准。

标准如下:

创建一个表单,其中每个位置都称为“代码点”或“代码位置”。 整个位置从U+0000到U+10FFFF; 到目前为止,有些位置被字符填充,有些位置被保存或为空。 例如,位置“U+0024”被字符“$”填充。

PS:当然,还有另一个叫做ISO的组织维护着另一个标准——“iso10646”,几乎是一样的。

2. utf - 8

如上所述,U+0024只是一个位置,所以我们不能将“U+0024”在电脑中保存为字符“$”。

必须有一种编码方法。

然后是编码方法,如UTF-8,UTF-16,UTF-32,UCS-2....

在UTF-8下,代码点“U+0024”被编码为00100100。

00100100是我们在计算机中为“$”保存的值。

UTF-8是一种使用8位序列编码Unicode字符的方法。

Unicode是一种用于表示来自多种语言的各种字符的标准。

它们不是一回事——UTF-8是编码Unicode的一种特殊方式。

根据您的应用程序和您打算使用的数据,有许多不同的编码可供选择。据我所知,最常见的是UTF-8、UTF-16和UTF-32。