我可以看到一些重复的字符Unicode http://en.wikipedia.org/wiki/Unicode。例如,字符“C”可以由代码点 U+0043 和 U+0421 表示。为什么会这样呢?
正如其他人所指出的,您在这里的主要谬误是混淆了拉丁文和西里尔文脚本以及其中的一些字形(即 C (U+0043 拉丁文大写字母 C http://www.fileformat.info/info/unicode/char/0043/index.htm) 和 C (U+0421 西里尔大写字母 ES http://www.fileformat.info/info/unicode/char/0421/index.htm))。有很多这样的字符对,看起来很相似,但实际上是不同的字符。例如,您会发现很多拉丁文、希腊文和西里尔文。但大多数时候它们只能以大写或小写形式工作。
然而,有are事实上是重复的,有时是故意的。例如,整个 (ASCII) 拉丁字母在 U+FF00 和 U+FFEF 之间的“半角和全角形式”Unicode 块中再次表示两次。不过,还有其他这样的例子,最引人注目的是在平面 1 上的数学字母部分,其中还存在三到四个拉丁字母。
还有其他一些东西实际上是相同的字符,但代码点不同。例如,有 µ (U+00B5 微信号 http://www.fileformat.info/info/unicode/char/00b5/index.htm) 和 μ (U+03BC 希腊小写字母 MU http://www.fileformat.info/info/unicode/char/03bc/index.htm)。这些通常通过以下方式链接分解 http://en.wikipedia.org/wiki/Canonical_decomposition.
Unicode 涉及一个抽象概念,称为代码点 http://en.wikipedia.org/wiki/Code_point。代码点明确定义了字符及其脚本或组。它说nothing关于如何对应glyph将呈现某种字体(对于拉丁语来说可能已经有很大不同)。它还没有定义如何在文件或内存中表示该代码点(即作为字节序列)。这是其中一个人的工作Unicode 转换格式 http://en.wikipedia.org/wiki/Unicode_transformation_format#Unicode_Transformation_Format_and_Universal_Character_Set.
在具有不同代码点的两种语言中具有相似外观的字符的原因是什么?
这里Unicode的要点是:
- 与以前存在的所有字符编码兼容。这必须确保编码中使用的每个字符与 Unicode 代码点的直接等效项存在一对一的映射。
- 忠实准确地代表当今使用的每个脚本,后来扩展到其他脚本were使用中并需要存储在计算机系统中。
因此,有非常强烈的动机将脚本分开并not尝试根据角色的外观来映射角色。无论如何,外观可能很棘手。以西里尔字母“т”为例,它在这里看起来像一个较小的大写拉丁语“T”。然而,斜体的通常呈现方式是:'т'看起来像小写的拉丁文“m”。你真的不想通过外表来映射这些角色。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)