我正在阅读UTF-8 character encoding但正在努力理解它。我知道ASCII字符(即字节值0x00
到0x7F
)在UTF-8中表示为单个字节。我想回答的问题是,在多字节UTF-8字符的情况下,第二个和后续字节总是0x80
到0xFF
,或者它们可以是任何值吗
答案 0 :(得分:3)
当给定的Unicode代码点值为U + 0000 - U + 007F时,它适合UTF-8中的单个字节。字节的高位设置为0
,其余7位保存码点值的位。
当给定的Unicode代码点值为U + 0080或更高时,它需要2-4个字节的UTF-8,具体取决于代码点值(U + 0080为2 - U + 07FF,U + 0800-U为3) + FFFF,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了解更多详情。它提供了上表,以及一些示例。另请阅读RFC 3629,这是官方的UTF-8规范。
答案 1 :(得分:0)
在UTF-8中字符的多字节表示中,所有字节在0x80到0xFF的范围内,即它们具有最高有效位集。这意味着字节0x00到0x7F仅使用 作为ASCII字符的单字节表示(在Unicode中称为Basic Latin)。