多字节 UTF-8 字符中的字节值
Byte values in multi-byte UTF-8 characters
我正在阅读有关 UTF-8 character encoding 但很难理解的内容。我知道 ASCII 字符(即字节值 0x00
到 0x7F
)在 UTF-8 中表示为单个字节。我要回答的问题是,在多字节 UTF-8 字符的情况下,第二个和后续字节总是 0x80
到 0xFF
,或者它们可以是任何值?
当给定的 Unicode 代码点值为 U+0000 - U+007F 时,它适合 UTF-8 中的单个字节。字节的高位设置为0
,其余7位保存代码点值的位。
当给定的 Unicode 代码点值为 U+0080 或更高时,它需要 2-4 个 UTF-8 字节,具体取决于代码点值(U+0080 - U+07FF 为 2,U+0800 为 3 - U+FFFFF,4 表示 U+10000 - U+1FFFFF)。第一个字节的高位设置为 110
、1110
或 11110
以指示完整序列中有多少字节(分别为 2-4)。后续字节的高位设置为10
。所有字节的其余位包含代码点值的位,根据需要在字节中展开。
Bits of First Last Bytes in
code point code point code point sequence Byte 1 Byte 2 Byte 3 Byte 4
7 U+0000 U+007F 1 0xxxxxxx
11 U+0080 U+07FF 2 110xxxxx 10xxxxxx
16 U+0800 U+FFFF 3 1110xxxx 10xxxxxx 10xxxxxx
21 U+10000 U+1FFFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
阅读 description on Wikipedia for more details. It provides the above table, as well as a few examples. Also read RFC 3629,这是一个官方的 UTF-8 规范。
在 UTF-8 字符的多字节表示中,所有 字节都在 0x80 到 0xFF 范围内,即它们设置了最高有效位。这意味着字节 0x00 到 0x7F 仅用作 ASCII 字符(在 Unicode 中称为 Basic Latin)的单字节表示。
我正在阅读有关 UTF-8 character encoding 但很难理解的内容。我知道 ASCII 字符(即字节值 0x00
到 0x7F
)在 UTF-8 中表示为单个字节。我要回答的问题是,在多字节 UTF-8 字符的情况下,第二个和后续字节总是 0x80
到 0xFF
,或者它们可以是任何值?
当给定的 Unicode 代码点值为 U+0000 - U+007F 时,它适合 UTF-8 中的单个字节。字节的高位设置为0
,其余7位保存代码点值的位。
当给定的 Unicode 代码点值为 U+0080 或更高时,它需要 2-4 个 UTF-8 字节,具体取决于代码点值(U+0080 - U+07FF 为 2,U+0800 为 3 - U+FFFFF,4 表示 U+10000 - U+1FFFFF)。第一个字节的高位设置为 110
、1110
或 11110
以指示完整序列中有多少字节(分别为 2-4)。后续字节的高位设置为10
。所有字节的其余位包含代码点值的位,根据需要在字节中展开。
Bits of First Last Bytes in code point code point code point sequence Byte 1 Byte 2 Byte 3 Byte 4 7 U+0000 U+007F 1 0xxxxxxx 11 U+0080 U+07FF 2 110xxxxx 10xxxxxx 16 U+0800 U+FFFF 3 1110xxxx 10xxxxxx 10xxxxxx 21 U+10000 U+1FFFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
阅读 description on Wikipedia for more details. It provides the above table, as well as a few examples. Also read RFC 3629,这是一个官方的 UTF-8 规范。
在 UTF-8 字符的多字节表示中,所有 字节都在 0x80 到 0xFF 范围内,即它们设置了最高有效位。这意味着字节 0x00 到 0x7F 仅用作 ASCII 字符(在 Unicode 中称为 Basic Latin)的单字节表示。