为什么UTF-8编码不使用11111xxx格式的字节作为第一个字节?

问题描述 投票:2回答:1

根据https://en.wikipedia.org/wiki/UTF-8的说法,字符编码的第一个字节永远不会以10xxxxxx和11111xxx的位模式开始。第一个的原因很明显:自动同步。但第二个怎么样?是否可以像潜在的扩展一样启用5字节编码?

utf-8 utf
1个回答
6
投票

旧版本的UTF-8允许最多6个字节的编码。它后来被限制为4字节编码,但没有理由使格式不一致以实现该限制。前导1的数量表示序列的长度,因此11111xxx仍然意味着“至少5个字节”,这里没有这样的合法序列。

拥有非法代码点在检测损坏方面非常有用(或者更常见的是,尝试解码实际上不是UTF-8的数据)。因此,使格式不一致只是为了取回一点存储(实际上不能用于任何东西),会损害其他目标。

© www.soinside.com 2019 - 2024. All rights reserved.