字符编码——utf8如何处理字符

character encoding - how utf-8 handles charactrers

所以,我知道当我们键入字符时,每个字符都会映射到字符集中的一个数字,然后,该数字会转换为二进制格式,以便计算机可以理解。他们将数字转换为二进制格式(分配了多少位)的方式取决于字符编码。

所以,如果我输入 L,它代表 76。然后 76 被转换为 1 字节二进制格式,因为假设是 UTF-8。

现在,我在某处读到以下内容:

The Devanagari character क, with code point 2325 (which is 915 in hexadecimal notation), will be represented by two bytes when using the UTF-16 encoding (09 15), three bytes with UTF-8 (E0 A4 95), or four bytes with UTF-32 (00 00 09 15).

因此,如您所见,上面写着 three bytes with UTF-8 (E0 A4 95)。 E0 A4 95字节如何?我问是因为我不知道 E0 A4 95 来自哪里...我们为什么需要这个?如果我们知道代码点是 2325,我们所要做的就是使用 UTF-8,我们知道 utf-8 需要 3 个字节才能将 2325 转换为二进制...为什么我们需要 E0 A4 95它是什么?

E0 A4 95是U+0915的3字节UTF-8编码。二进制:

   E   0    A   4    9   5  (hex)
11100000 10100100 10010101  (binary)
1110xxxx 10xxxxxx 10xxxxxx  (3-byte UTF-8 encoding pattern)
    0000   100100   010101  (data bits)

    00001001 00010101       (regrouped data bits to 8-bit bytes)
       0   9    1   5       (hex)

               U+0915       (Unicode code point)

第一个字节的二进制模式1110xxxx 是一个前导字节,表示 3 字节编码和 4 位数据。后续字节以 10xxxxxx 开头,并提供另外 6 位数据。在一个 3 字节的前导字节指示符之后将有两个后续字节。

有关详细信息,请阅读有关 UTF-8 and the standard RFC-3629 的维基百科文章。