获得徽章 0
赞了这篇沸点
阮一峰的这篇文章把 Unicode 和 UTF-8 的关系讲得很清楚了,不过有一点值得补充一下,为什么 UTF-8 多字节的情况下,要求后面的字节以 10 开头。

比如三字节,写成 1110xxxx xxxxxxxx xxxxxxxx,显然计算机也能解析,但由此带来一个局限:第二个字节,也可能是 1110 开头,这样计算机就无法直接通过某个字节判断其是一个字符编码的起始字节,还是中部/尾部字节。

从头解析整个二进制流,肯定是没问题的,但要是想编辑字符串中间的某个字符,比如删掉它,就比较麻烦,如果不从头遍历,或者维护一个映射表,计算机就无法知道应该删除哪几个字节。

如果每个字节都有明确的开头,那么删除操作就很容易了,如果当前指针指向 10 开头的字节,那么只需将其本身以及随后的 10
开头的字节都删掉,再将其前面直到开头为 11 的字节都删掉,就可以了。
展开
评论
下一页
个人成就
文章被点赞 19
文章被阅读 34,921
掘力值 871
收藏集
2
关注标签
36
加入于