鉴于UTF-8编码的Unicode字符串,该字符串是在存储器中只是字节。
如果计算机想这些字节转换到其对应的Unicode代码点(数字),怎么能知道一个字符结束和另一个开始? 一些字符是由1个字节,最多6个字节表示,等等。 所以,如果你有
00111101 10111001
这可能代表2个字符,或1如何计算机确定它是正确解读呢? 是否有某种约定,从中我们可以从当前字符多少字节使用的第一个字节或什么认识?
鉴于UTF-8编码的Unicode字符串,该字符串是在存储器中只是字节。
如果计算机想这些字节转换到其对应的Unicode代码点(数字),怎么能知道一个字符结束和另一个开始? 一些字符是由1个字节,最多6个字节表示,等等。 所以,如果你有
00111101 10111001
这可能代表2个字符,或1如何计算机确定它是正确解读呢? 是否有某种约定,从中我们可以从当前字符多少字节使用的第一个字节或什么认识?
多字节序列的第一个字节编码在前导1比特的数目的序列的长度:
0xxxxxxx
是自己的一种性格; 10xxxxxx
是一个多字节字符的延续; 110xxxxx
是2字节字符的第一个字节; 1110xxxx
是一个3字节字符的第一个字节; 11110xxx
是一个4字节字符的第一个字节。 具有多于4前导1位字节不以UTF-8编码的有效字符,因为4个字节的序列已经覆盖比为U + 10FFFF的整个Unicode范围从U + 0000以上。
所以,在这个问题提出的示例中有一个ASCII字符和一个延续字节不编码自身的字符。