【问题标题】:String class based on graphemes?基于字素的字符串类?
【发布时间】:2010-10-20 06:13:09
【问题描述】:

我想知道为什么我们没有一些字符串类来表示一串 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++

【问题讨论】:

  • 因为没写?
  • 我想知道这种问题是否会更好地放在programmers.stackexchange.com
  • @John, nassar:我认为 John 的建议对这个问题来说是一个很好的建议
  • 是的,听起来不错。但我认为,如果每个人都还在使用代码点,那肯定是有充分理由的——我想知道原因是什么。这是一个较早问题的后续,试图找到一个好的经验法则来正确和轻松地进行字符串处理。

标签: string unicode character-encoding


【解决方案1】:

我不这么认为,因为字素断点并不是衡量正确性的唯一标准。而且,根据所使用的语言/脚本,用户感知到的字符也不同。如果您担心规范化模式,您还想查看Normalizer::concatenate。所以我建议大部分时间只在代码单元中工作,并在需要时计算中断。

【讨论】:

    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多