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

Gab*_*mas 4 unicode encoding utf-8

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

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

我基本上想知道é它为什么用0xA9而不是0xE9编码.文本编辑器如何从0xC3A9转换为0xE9?任何轮班操作?

Joa*_*uer 12

是什么让你认为0xC3是"元数据字节"?

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

UTF-8编码的代码点的第一个字节包含一个标记(前导1的数量),表示用于编码代码点的总字节数(*) 实际代码点的前几位.然后,所有尾随字节包含"连续标记"(位10)和编码的代码点的6位.

关于UTF-8的维基百科文章对该过程很好的描述.

有一个直接使用代码点值的编码:UTF-32(又名UCS-4)基本上"将代码点值用作32位值"

(*)标记实际上非常简单:如果字节以字节开头(即它的最高位是)0,则它是单字节编码(即0到127之间的代码点).如果以它开头10,则它是一个连续字节.如果是110,1110或者11110它分别是2字节,3字节或4字节序列的开始.111110并且1111110过去也被定义,但在现代UTF-8中不再有效(因为那些只需要编码保证永远不会在Unicode标准中使用的值).