我想知道为什么我们没有一些字符串类代表一串Unicode字形集群而不是代码点或字符。在我看来,在大多数应用程序中,程序员在必要时访问字形组件比从代码点组织它们更容易,这似乎是必要的,即使只是为了避免在“中间字形”中随意破坏字符串(至少在理论上)。在内部,字符串类可能使用可变长度编码,例如UTF-8,UTF-16,或者在此上下文中甚至UTF-32是可变长度的;或者为它们实现子类(并且可选地在运行时配置选项,以便不同的语言可以使用它们的最佳编码)。但是,如果程序员在检查字符串时可以“看到”字形单元,那么字符串处理代码通常不会更接近于实现正确性,并且没有太多额外的复杂性吗?
参考文献:
Characters and Combining Marks
Unicode implementer's guide part 4: grapheme breaking
UnicodeString Class Reference
Enumerating a string by grapheme instead of character
Strings and character encoding in C++
答案 0 :(得分:0)
我不这么认为,因为字素断裂不是衡量正确性的唯一标准。并且,根据所使用的语言/脚本,存在不同的用户感知字符。如果您担心规范化模式,您还需要查看Normalizer::concatenate。所以我建议大多数时间只在代码单元中工作,并在需要时计算中断。