【问题标题】:What is a code point and code space?什么是代码点和代码空间?
【发布时间】:2015-08-29 12:43:57
【问题描述】:

我正在阅读有关代码点的 Wikipedia 文章,但不确定我是否理解正确。

例如,字符编码方案 ASCII 包括 128 码 点在 0hex 到 7Fhex 范围内

那么 0hex 是一个代码点吗?

在代码空间中也找不到任何东西。

PS。如果重复,请在 cmets 中发布链接,我将删除问题。

【问题讨论】:

  • 一个更清楚的例子是 Unicode,其中代码点没有特定的字节表示,它们只是介于 0 和非常大的数字之间的数字(是的,我懒得查找限制)。然而,有趣的不是数字,而是赋予它们的含义(例如,32dec / 20hex 表示空间)。
  • 那么 20hex 是一个码位吗?
  • @VeganSv 是的。

标签: character-encoding character ascii


【解决方案1】:

code point 是一个数字代码,它指代特​​定编码字符集中的单个元素/字符,这句话意味着 ASCII 有 128 个可能的符号(其中只有一部分是可打印的每个字符都有一个相关的数字代码,通过它可以识别/寻址,代码点

对于另一种措辞,请查看this Joel's postthis summary by Oracle,它们也引入了代码单元的概念:)

为了给您一个真实世界的代码点示例,请考虑 unicode 字符 snowman ☃,它的代码点(使用 unicode 语法 U+<code point in hex>)是 U+2603

【讨论】:

  • 您应该将“编码”更改为“字符集”,以减少与编码作为代码点到字节的映射的特定含义的混淆。
  • 我还是不明白,我阅读了 Wikipedia 文章并没有理解它(我的意思是在 Unicode 中它们是数字,但在其他系统中它们不是......),这就是为什么我在这里问,一些真实的例子会很有帮助,因为这听起来都是理论上的。也许我应该研究其他来源。还是谢谢。
  • @TomBlodget 同意 100%。
  • @VeganSv 现在应该更清楚这个例子了。
【解决方案2】:

这些概念比传统的、Unicode 之前的概念稍微抽象一些。

传统上,“代码空间”或多或少是“字符范围”的同义词。 7 位编码的代码空间从 0 到 127,8 位编码从 0 到 255,16 位编码从 0 到 65535。Unicode 的代码空间从 0 到 0x10FFFF,尽管部分代码空间是无人居住。

传统上,“代码点”或多或少是“字符代码”的同义词。 Unicode 从单个“字符代码”映射中抽象出来,强调一组字形和一组字符代码之间存在更复杂的关系,并且某些代码点(例如连接修饰符)不会将单个字形编码为这样的。从表面上看,U+0020 仍然是与 ASCII SPACE 0x20 相同的字符,但 Unicode 具有更丰富的一组定义良好的属性和关系。

Unicode 必须为这些概念创造新的术语,以免使传统术语具有扩展的含义。 “代码空间”是一个独特的、定义明确的概念,它与(隐式连续的,可能完全填充的)字符范围并不完全相同。 “代码点”是一个独特的、定义明确的概念,它与“字符代码”并不完全相同(甚至一开始就没有完全定义好;它有多种模棱两可的解释)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多