UTF-8000:突破限制的无限 UTF-8

UTF-8000: Unlimited UTF-8

UTF-8000:突破限制的无限 UTF-8

这是一个名为 UTF-8000 的趣味提案,旨在打破标准 UTF-8 的字节长度限制,实现任意长度的编码单元。该方案在保留 ASCII 兼容性和自同步特性的基础上,通过引入多个起始字节和条纹化编码技术,将代码单元扩展至 22 字节甚至更长。文章详细剖析了从第一字节、起始位到内容位的解剖结构,解释了如何通过一元编码序列精确指示长度,同时严格防范过长效编码。尽管这并非 Unicode Consortium 的官方标准,但其清晰的规范定义和参考实现展示了编码设计的无限可能。

UTF-8000 规范的主要贡献在于,清晰地将 UTF-8 代码单元首字节的最高位拆分为自同步位和起始位,并阐明了如何在必要时将起始位跨延续字节进行条纹化分布,从而实现任意大的代码单元。
  1. 2shortplanks

    从实际角度来看,允许码点占用任意数量的字节似乎是个坏主意——这简直就是在尖叫“缓冲区溢出问题”。

    所以在实践中,你肯定需要给这个设定一个任意上限(文章也暗示了这一点)。但如果你设了上限,就会出现一种情况:标准的某种实现能解码某些字符,而另一种实现却不能。更好的做法是有一个标准硬性限制字节数,另一个标准使用更多字节,以此类推。

  2. sph

    > UTF-8000 绝不代表或获得 Unicode 联合会的认可。

    除非他们决定扩展表情符号范围,为所有过去和未来的虚构语言、鸟鸣和狗叫声预留空间。

    联合会的某人看到这些新腾出的空间,肯定正搓手窃喜呢。

    不过说实话,这是个很酷的 hack!如果你发明了一种将大数字编码成字节的方法,为什么要把自己限制在 24 位数字上呢?

  3. mqus

    关于如何利用这片空间的一些想法:

    - 完全自定义的表情符号(想象一下类似 RPG 的角色定制界面)

    - 甚至,为什么不直接嵌入完整的 JPEG/GIF 图片?

    - 某种 Unicode 编程脚本(运行 Doom 游戏)

    - ?

    话说回来,这里有个非常轻微(HN 风格)的吹毛求疵:

    > 否则,对于 n 字节的码单元,效率是 (5n+1) / 8n,即 n 字节的 8n 位中有 5n+1 位是有效内容位。我们可以将其重写为 (5/8) + 1/(8n),这会相对较快地趋近于 5/8 = 62.5%。很高兴这个极限是非零的,且不依赖于 n。

    按定义来说,极限不就是不再依赖于 n 的吗?

  4. Sharlin

    UTF-8 最初支持高达六字节的编码(参见例如 RFC 2279),但在 2003 年为了匹配 UTF-16 的限制,被缩减为四字节 :(

  5. stbenjam

    > 没有引入任何特殊情况。所有属性均得以保留。

    我其实不知道这是否由 LLM 生成,但这类措辞现在让我感到莫名的触发/不适。

同日更多故事

2026-09-20