【发布时间】:2011-12-28 05:12:13
【问题描述】:
我们编写了一个C++ 应用程序并且需要知道这一点:
UTF8 文本编码是从字节到字符的单射映射,这意味着每个字符(字母...)都只以一种方式编码吗?所以,例如字母“Ž”不能同时编码为 3231 和 32119。
【问题讨论】:
-
每个 UTF 字符都是一个编码的 Unicode“代码点”。每个代码点都有一个关联的字形(如“Ž”)。但是 Unicode 也允许字形的组合。这么简单的答案没有。但是每个“代码点”都应该是唯一的。
-
只是为了让我们的术语直截了当:在 unicode 中,根据定义,任何字符都对应于单个代码点(但也有非字符代码点);然后,还有用户感知的字符,也称为字素簇,这就是我们在谈论非 unicode 上下文中的字符时通常所说的意思;许多字素簇可以用多个字符序列表示,例如 á 可以编码为
U+0061 U+0301和U+00E1- 这就是规范化的用武之地...
标签: c++ c unicode utf-8 unicode-normalization