3

尝试重新表述:您能否将每个组合字符组合映射到一个代码点?

我是 Unicode 新手,但在我看来,没有编码、规范化或表示形式,在 Unicode 的每种情况下,一个字符都是一个代码点。这个对吗?

基本多语言平面也是如此吗?

4

3 回答 3

7

如果您的意思是一个字符 == 一个数字(即:每个字符由相同数量的字节/单词/what-have-you 表示):在 UCS-4 中,每个字符由一个 4 字节数字表示。这对于用单个值表示每个字符来说已经足够大了,但是如果您不需要任何更高的字符,那就太浪费了。

如果您指的是兼容性序列(即:其中 e + ´ => é):现有现代语言中使用的大多数组合都有单字符表示。如果您正在编写自己的语言,您可能会遇到问题......但如果您坚持使用人们实际使用的语言,您会没事的。

于 2011-01-05T19:47:52.853 回答
6

您可以将每个组合字符组合映射到一个代码点吗?

每个组合字符组合?您提出的编码如何表示字符串“ à̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼͇͈͉͍͎́̂̃̄̅̆İ̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́͆͊͋͌̕̚ͅ͏͓͔͕͖͙͚͐͑͒͗͛ͣͤͥͦͧͨͩͪͫͬͭͮͯ͘͜͟͢͝͞͠͡”?(一个带有一百多个组合标记的“a”?)这不切实际。

然而,Unicode 中有很多“预先组合”的字符,例如 áçñü。规范化形式 C 将尽可能使用这些而不是分解的版本。

于 2011-01-06T05:10:10.953 回答
1

在我看来,没有任何编码、规范化或表示形式,在 Unicode 的每种情况下,一个字符都是一个代码点。这个对吗?

取决于“字符”一词的含义。Unicode 具有抽象字符(标准第 3 章中的定义 7:“用于组织、控制或表示文本数据的信息单元”)和编码字符(定义 11:“关联(或映射)在抽象字符和代码点之间”)。所以一个字符永远不是一个代码点,但是对于许多代码点来说,存在一个映射到代码点的抽象字符,这种映射被称为“编码字符”。但是(定义 11,第 4 段):“单个抽象字符也可以一系列代码点表示”</p>

基本多语言平面也是如此吗?

BMP 和其他平面之间没有与抽象或编码字符相关的概念差异。上面的陈述适用于代码空间的所有子集。

根据您的应用程序,您必须区分字形字形簇字形抽象字符编码字符代码点标量值代码单元字节等术语。所有这些概念都是不同的,它们之间没有简单的映射关系。特别是,这些实体之间几乎从来没有一对一的映射。

于 2011-01-05T22:12:44.730 回答