gpt4 book ai didi

utf-8 - 为什么 UTF-8 会浪费这么多位?

转载 作者:行者123 更新时间:2023-12-03 21:27:31 24 4
gpt4 key购买 nike

如果你看 table here其中显示了UTF-8的字节布局,看起来很浪费!

一个 6 字节的字符有 17 个硬编码位!如果我们只是将每个字节的第一位设置为 1要指示“下一个字节是同一字符的一部分”,那么我们只需要 6 位:

1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 0xxxxxxx

它仍然会向后兼容 ASCII!而且我们也不会被限制在 6 个字节。

那么为什么 UTF-8 是浪费的呢?肯定有我没有看到的原因。此外,似乎第一个字节中有足够的信息,我们甚至不需要 10每个剩余字节上的 header 。我们本来可以
0xxxxxxx
10xxxxxx xxxxxxxx
110xxxxx xxxxxxxx xxxxxxxx
1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx
11110xxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
11111xxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx

那也会奏效,不是吗?或者我们可以使用不同的方案支持更多字节。

如果不正确支持 UTF-8,它是否与这些单个字节的显示方式有关?什么 10买得起?这种权衡值得吗?如果我尝试在仅 ASCII 的程序中呈现 UTF-8 编码的日语字符,那么无论如何我都会得到垃圾,不是吗?

最佳答案

这种冗余的原因是使 UTF-8 自同步:由一个码字的一部分或任何两个相邻码字的重叠部分形成的符号流不是有效的码字。见 https://en.wikipedia.org/wiki/Self-synchronizing_codehttps://en.wikipedia.org/wiki/UTF-8#History

关于utf-8 - 为什么 UTF-8 会浪费这么多位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com