utf8查找字符分隔

关于utf-8编码简介,可参见这篇博文,写得非常地好。

Unicode符号范围 | UTF-8编码方式
(十六进制)          | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

刚看utf-8编码时很不解为什么每个字节前两个要放10呢,前天忽然发现这样做可以很容易地查找到字符的开始和结尾,因为10不是一个合法字符的最高位,1位utf-8编码最高位是0,而n位(n>=2)合法编码是以n个1开头的,所以向前、向后查看几个字节的最高位即可确定字符编码边界。

不知道这个10还没有其他的用处,另外不太清楚GBK是怎么确定字符编码边界的,如果快速向前或向后移动一个字符,待学习。

原文地址:https://www.cnblogs.com/windtail/p/2657485.html