gpt4 book ai didi

unicode - 为什么字符é在UTF-8中编码为0xC3 0xA9?

转载 作者:行者123 更新时间:2023-12-02 12:45:32 24 4
gpt4 key购买 nike

如果我将字符 é 写入文件并使用十六进制编辑器打开它,我可以看到字节 0xC3、0xA9。

根据维基百科,第一个字节称为前导字节,第二个字节称为尾随字节。 0xC3 它是一个元数据字节,意味着它用 1 个字节 0xA9 编码的字符,但 é 的 unicode 值为 0xE9 .

我基本上想知道为什么é它是用0xA9而不是0xE9编码的。文本编辑器如何从 0xC3A9 转换为 0xE9?有移位操作吗?

最佳答案

是什么让您认为 0xC3 是“元数据字节”?

UTF-8 中的每个字节都包含有关编码的代码点的相关信息。

UTF-8 编码代码点的第一个字节包含一个标记(前导 1 的数量),指示用于编码代码点的字节总数(*) 10 )和编码代码点的另外 6 位。

关于 UTF-8 的维基百科文章有 a pretty good description of the process .

有一种直接使用代码点值的编码:UTF-32(又名 UCS-4),基本上是“使用代码点值作为 32 位值”

(*) 标记实际上非常简单:如果字节以(即它的最高有效位是)0 开头。 ,那么它是单字节编码(即 0 到 127 之间的代码点)。如果以 10 开头,那么它是一个连续字节。如果是110 , 111011110那么它分别是 2、3 或 4 字节序列的开始。 1111101111110也曾经被定义过,但在现代 UTF-8 中不再有效(因为它们只需要对保证永远不会在 Unicode 标准中使用的值进行编码)。

关于unicode - 为什么字符é在UTF-8中编码为0xC3 0xA9?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com