unicode - 为什么在Unicode中有重复的字符?

标签 unicode codepoint

我可以在Unicode中看到一些重复的字符。例如,字符“C”可以由代码点U + 0043和U + 0421表示。为什么会这样呢?

最佳答案

正如其他人所指出的,您在这里的主要谬误是混淆了拉丁和西里尔文字以及其中的某些字形(即C(U+0043 LATIN CAPITAL LETTER C)和С(U+0421 CYRILLIC CAPITAL LETTER ES))。有许多这样的字符对,它们看起来很相似,但是是不同的字符。例如,您会在拉丁语,希腊语和西里尔字母中找到很多。不过,大多数情况下,它们只能使用大写或小写字母。

但是,实际上存在重复项,有时是故意重复的。例如,整个(ASCII)拉丁字母在U + FF00和U + FFEF之间的“半角和全角形式” Unicode块中再次表示两次。但是,还有其他此类示例,最值得注意的是,在飞机1的数学字母部分中,存在三个或四个以上的拉丁字母。

实际上,还有其他一些东西是相同的字符,但是在不同的代码点。例如,有µ(U+00B5 MICRO SIGN)和µ(U+03BC GREEK SMALL LETTER MU)。这些通常通过decomposition链接。

Unicode处理称为code point的抽象概念。代码点明确定义了一个字符及其脚本或组。它没有说明字体中对应的字形将如何呈现(对于拉丁语,它可能已经千差万别了)。它还没有定义该代码点在文件或存储器中的表示方式(即字节序列)。这是Unicode Transformation Formats的工作。

What is reason to have a similar looking character in two languages with different code points?



Unicode的要点如下:
  • 与每个以前存在的字符编码兼容。这必须确保在编码中使用的每个字符到作为Unicode代码点的直接等效字符都有一对一的映射。
  • 忠实,准确地代表了当今使用的每个脚本,后来又扩展为其他正在使用并需要存储在计算机系统中的脚本。

  • 因此,有很强的动力将脚本分开,而不要尝试根据字符的外观映射字符。无论如何,外观可能很棘手。例如,西里尔字母'т',在这里看起来像一个较小的大写拉丁字母'T'。但是,斜体呈现时的通常方式是:'т'看起来像是小写的拉丁语'm'。您确实不想按外观映射此类字符。

    关于unicode - 为什么在Unicode中有重复的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1741236/

    相关文章:

    python - 如何将 Unicode 代码点保存为字符,而不是 Python 中的代码点

    objective-c - 为什么相同的 Unicode 字符具有不同的整数值,反之亦然?

    delphi - 我可以消除额外的 Unicode 字符串调用吗(Delphi)

    go lang version-able 字符串规范化

    unicode - Unicode第一,上一个,下一个和最后一个

    java - 从代码点整数列表生成 String 对象?

    php - 从十六进制代码创建 UTF-8 字符串

    Mysql 将 unicode 代码点转换为 utf-8 字符

    eclipse - 在 Eclipse 中显示字符的 Unicode 代码点值