mpe*_*pen 4 utf-8 character-encoding
如果你看一下这里显示 UTF-8 字节布局的表格,它看起来很浪费!
一个 6 字节的字符有 17 个硬编码位!如果我们只是将每个字节的第一位设置1为指示“下一个字节是同一字符的一部分”,那么我们将只需要 6 位:
1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 0xxxxxxx
Run Code Online (Sandbox Code Playgroud)
而这将仍然是与ASCII向后兼容!而且我们也不会被限制在 6 个字节。
那么为什么 UTF-8 是浪费的呢?肯定有我没有看到的原因。此外,似乎第一个字节中有足够的信息,我们甚至不需要10剩余每个字节的标头。我们本来可以
0xxxxxxx
10xxxxxx xxxxxxxx
110xxxxx xxxxxxxx xxxxxxxx
1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx
11110xxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
11111xxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
Run Code Online (Sandbox Code Playgroud)
那也会奏效,不是吗?或者我们可以使用不同的方案支持更多字节。
如果不正确支持 UTF-8,它是否与这些单个字节的显示方式有关?什么10负担得起?这种权衡值得吗?如果我尝试在仅 ASCII 的程序中呈现 UTF-8 编码的日语字符,那么无论如何我都会得到垃圾,不是吗?
这种冗余的原因是为了让UTF-8自同步:一个码字的一部分,或者任意两个相邻码字的重叠部分形成的符号流,不是有效的码字。请参阅https://en.wikipedia.org/wiki/Self-synchronizing_code和https://en.wikipedia.org/wiki/UTF-8#History
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |