pax*_*blo 40
UTF-8中的连续字节是前两位的任何字节10.
它们是多字节序列中的后续字节.下表可能有所帮助:
Unicode code points Range Encoding Binary value
------------------- -------- --------------------------
U+000000-U+00007f 0xxxxxxx 0xxxxxxx
U+000080-U+0007ff 110yyyxx 00000yyy xxxxxxxx
10xxxxxx
U+000800-U+00ffff 1110yyyy yyyyyyyy xxxxxxxx
10yyyyxx
10xxxxxx
U+010000-U+10ffff 11110zzz 000zzzzz yyyyyyyy xxxxxxxx
10zzyyyy
10yyyyxx
10xxxxxx
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到Unicode代码点如何映射到UTF-8多字节字节序列及其等效二进制值.
基本规则如下:
0位开头,则它是一个小于128的单字节值.11,则它是多字节序列的第一个字节,并且1开始时的位数表示总共有多少字节(110xxxxx有两个字节,1110xxxx有三个,11110xxx有四个).10,那么它是一个连续字节.这种区别允许非常方便的处理,例如能够从序列中的任何字节备份以找到该代码点的第一个字节.只需向后搜索,直到找到一个不是以10比特开头.
类似地,它也可以strlen通过仅计算非10xxxxxx字节来用于UTF-8 .