3 字节可变宽度 Unicode 编码方案的名称是什么?

问题描述 投票:0回答:2

大家好,我想知道 Unicode 编码方案的名称是什么:

代码点 U+1 到 U+7F 使用一个字节表示:

   Byte 1: 0xxxxxxx

代码点 U+80 到 U+3FFF 使用两个字节表示:

   Byte 1: 0xxxxxxx
   Byte 2: 1xxxxxxx

代码点 U+4000 到 U+10FFFF 使用三个字节表示:

   Byte 1: 0xxxxxxx
   Byte 2: 1xxxxxxx
   Byte 3: 1xxxxxxx

据我所知,这个方案击败了 UTF-8,因为只需要一到三个字节来表示每个 CodePoint(UTF-8 需要 1 到 4 个字节来表示单个 CodePoint),我想知道是否有一个正式名称对于这种编码。

unicode encoding
2个回答
3
投票

您的实际问题似乎是,此编码的“名称是什么”。虽然很难证明是否定的,但我会大胆地说,没有其他人发布并命名了这种编码。你刚刚发明了它。因此,你的答案是这种编码没有名称。为它发明一个名字,那就是它的名字。

您还添加了“据我所知,该方案胜过 UTF-8...”。评论中对此说法进行了讨论。如果您想将其作为一个单独的问题发布,例如“这种编码方案是否比 UTF-8 更好”,那就是另一回事了。提示:如果您这样做,请考虑使用哪些标准来衡量“更好”。你认为你的新编码方案比UTF-8更好吗根据UTF-8自己的设计标准


0
投票

冒着不必要地复活一个非常古老的问题的风险,并且只是为了完整性,我想说这是有时被称为“VarInt”的轻微变化(例如参见来自 ProtoBuf 线格式)。它也类似于 VLQ(它有很多变体和许多其他名称)。

不同之处在于,VarInt 在除最后一个字节之外的所有字节上设置了 msb,但 OP 的编码在除第一个字节之外的所有字节上设置了 msb。

我认为 VarInt 编码更好,因为当解码器遇到编码值的第一个字节时,它更容易解码(并且可能更稳健):它可以知道需要更多字节,而无需等待查看接下来的字节。

我必须指出,虽然 ProtoBuf 的使用可能在 2012 年(这个问题发布时)还没有得到很好的宣传,但其他类似(或相同)的编码已经使用了一段时间(请参阅维基百科文章。)

© www.soinside.com 2019 - 2024. All rights reserved.