【问题标题】:In what circumstances would 32-bits be required in UTF-8 encoding?在什么情况下 UTF-8 编码需要 32 位?
【发布时间】:2015-10-29 17:21:46
【问题描述】:

根据我的理解和我在网上阅读的内容,UTF-8 可以使用 1-4 个代码单元(每个长度为一个字节)来编码 Unicode 字符集中的所有字符。我想知道的是:既然 Unicode 中的所有代码点都可以用 21 位表示,那么你什么时候会使用 4 个代码单元而不是 3 个?

您只需要 24 位来表示任何 Unicode 字符,那么您什么时候会在 UTF-8 编码中使用 32 位,为什么?是否需要额外的位来存储某种额外的数据?

【问题讨论】:

    标签: unicode encoding utf-8


    【解决方案1】:

    UTF-8 编码有开销。第一个字节使用 1-5 位来表示使用了多少附加字节,每个附加字节使用 2 位作为连续字节标记。因此,一个 4 字节的 UTF-8 序列的第一个字节需要 5 位开销,其余 3 个字节每个字节需要 2 位开销,剩下 21 位用于编码代码点。

    1 字节 UTF-8,7 个数据位(U+0000 到 U+007F):0xxxxxxx
    2 字节 UTF-8,11 个数据位(U+0080 到 U+07FF):110xxxxx 10xxxxxx
    3 字节 UTF-8,16 个数据位(U+0800 到 U+FFFF):1110xxxx 10xxxxxx 10xxxxxx
    4 字节 UTF-8,21 个数据位(U+10000 到 U+10FFFF):11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

    参考:UTF-8

    【讨论】:

      猜你喜欢
      • 2016-04-26
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2015-11-30
      • 2013-11-15
      • 1970-01-01
      相关资源
      最近更新 更多