在Unicode中组合字符需要什么?

时间:2014-10-04 21:16:40

标签: unicode combining-marks

当映射到符号的单个代码点足以满足时,在Unicode中使用符号组合字符表示的实际应用是什么?

它为我们带来了哪些编程/非编程优势?

2 个答案:

答案 0 :(得分:0)

当存在预先组合的表示时,使用分解的表示(基本字符和组合字符)没有特别的编程优势,例如,使用U + 0065 U + 0065 LATIN SMALL LETTER E U + 0301将ACUTE ACCENT代替U + 00E9 LATIN SMALL LETTER E与ACUTE“é”相结合。这种分解的演示文稿需要在编程中处理,这是问题的一部分,而不是优势。所以它类似于询问在字符代码中使用字母U的好处。

分解演示文稿(或字母U)在实际数据中使用并需要处理的原因是编程外部,因此在SO处偏离主题。

分解所有可分解字符可能在处理方面具有优势,因为它使数据更加统一,规范。这将涉及所需处理的一些特定特征,并且它将通过执行(通常具有库例程)归一化为NFD或NFKD形式来实现。但这通常是处理的一部分,而不是输入格式的强加。如果执行某些字符串匹配,则最希望将字符的分解和预合成表示视为等效,并且规范化使这变得容易。但这是一种处理两种不同表示的方式,而不是它们存在的原因,并且它同样可以通过归一化到NFC来执行(即,预先组合可以预先组合的所有内容)。请参阅Unicode常见问题解答部分Normalization

答案 1 :(得分:0)

分解后的组件更适合于文本编辑,并且“可能但不确定”并具有良好的压缩率。

在编辑文本时,有时需要修改重音符号,但是预组合字符(Firefox拼写检查中的预组合字符不是单词)不允许部分修改。有时,用户可能希望在不删除重音的情况下修改基本字符。这类编辑更喜欢使用分解的字符。

关于压缩率,在每种语言进行单独编码的日子里,它更有意义。在这种情况下,每种语言的8位编码允许每种语言拥有自己的字符集。一些语言对分解的字符具有更好的压缩率。 8位的小空间意味着它们只能容纳这么多唯一的代码点,并使用可变宽度和可分解的字符。