字节值以多字节UTF-8字符表示

时间:2015-01-19 02:18:16

标签: unicode utf-8

我正在阅读UTF-8 character encoding但正在努力理解它。我知道ASCII字符(即字节值0x000x7F)在UTF-8中表示为单个字节。我想回答的问题是,在多字节UTF-8字符的情况下,第二个和后续字节总是0x800xFF,或者它们可以是任何值吗

2 个答案:

答案 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)。第一个字节的高位设置为110111011110,以指示完整序列中的字节数(分别为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)。