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

这是一个名为 UTF-8000 的趣味提案,旨在打破标准 UTF-8 的字节长度限制,实现任意长度的编码单元。该方案在保留 ASCII 兼容性和自同步特性的基础上,通过引入多个起始字节和条纹化编码技术,将代码单元扩展至 22 字节甚至更长。文章详细剖析了从第一字节、起始位到内容位的解剖结构,解释了如何通过一元编码序列精确指示长度,同时严格防范过长效编码。尽管这并非 Unicode Consortium 的官方标准,但其清晰的规范定义和参考实现展示了编码设计的无限可能。
UTF-8000 规范的主要贡献在于,清晰地将 UTF-8 代码单元首字节的最高位拆分为自同步位和起始位,并阐明了如何在必要时将起始位跨延续字节进行条纹化分布,从而实现任意大的代码单元。
HN 评论区
118- 2shortplanks
从实际角度来看,允许码点占用任意数量的字节似乎是个坏主意——这简直就是在尖叫“缓冲区溢出问题”。
所以在实践中,你肯定需要给这个设定一个任意上限(文章也暗示了这一点)。但如果你设了上限,就会出现一种情况:标准的某种实现能解码某些字符,而另一种实现却不能。更好的做法是有一个标准硬性限制字节数,另一个标准使用更多字节,以此类推。
- sph
> UTF-8000 绝不代表或获得 Unicode 联合会的认可。
除非他们决定扩展表情符号范围,为所有过去和未来的虚构语言、鸟鸣和狗叫声预留空间。
联合会的某人看到这些新腾出的空间,肯定正搓手窃喜呢。
不过说实话,这是个很酷的 hack!如果你发明了一种将大数字编码成字节的方法,为什么要把自己限制在 24 位数字上呢?
- 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 的吗?
- Sharlin
UTF-8 最初支持高达六字节的编码(参见例如 RFC 2279),但在 2003 年为了匹配 UTF-16 的限制,被缩减为四字节 :(
- stbenjam
> 没有引入任何特殊情况。所有属性均得以保留。
我其实不知道这是否由 LLM 生成,但这类措辞现在让我感到莫名的触发/不适。