为什么 UTF-8 编码比 UTF-16 编码应用更广泛?

关注者
361
被浏览
107,323
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

补充一下,UTF 32 也不想理想中那么方便索引,主要是 emoji 的锅,举两个例子:

一、Emoji 里面的国旗其实由两个字符组成,称为 region indicator,每个字符是一个 region indicator symbol letter,从 A 到 Z,U+1F1E6 到 U+1F1FF。比如说法国国旗就是用 FR 的对应 region indicator symbol letter 来表示的。Swift 的 String 自称有较好的 Unicode 支持,但对这样的字符的长度目前给的还是 2(Unicode 8.0 标准),而实际上 Unicode 9.0 已经要求把它们看作一个字符了。

二、为了政治正确,人们引入了带肤色的 emoji 表情,它们是由普通表情和一个代表颜色的 emoji 字符组成。

于是乎,如果写编辑器的话,不管怎么样都要 O(n) 来计算可见字符的长度的(这还没有考虑韩语那种三个字符叠成一个字符的情况),所以前端们很可怜的。