5

我正在尝试评估不区分大小写的 UTF-8 字符串比较的不同策略。

我已经阅读了 Unicode 联盟的一些材料,对 ICU 进行了试验,并尝试提出各种实现质量的替代方案。

我多次看到简单案例映射和完整案例映射之间的文本不同,我想确保我完全理解这种差异。

当我读到它时,简单案例映射是“无上下文的”,即不需要知道有效负载是什么语言。由于突厥语“I/ı/İ/i”的崩溃,这将给出近似结果。

另一方面,完整案例映射需要知道有效负载的语言才能执行映射。有了这些额外的信息,它可以采取特殊措施来覆盖作为突厥语字符串的“Kim”应该变成大写的“KİM”,但作为英文字符串的“Kim”应该变成大写的“KIM”的情况。

我说对了吗?

是否还有其他“多面”代码点的示例对于不同语言的折叠方式不同?

谢谢!

更新:将简单案例映射作为语言独立的来源之一是ICU 的文档。我将其解释为 Unicode 事实,但也许它只是实现的声明?

4

2 回答 2

2

嗯......对于大多数西方语言,辅音组合“SS”将小写为“ss”,但在德语中它可能成为特殊字母“ß”。这只是“可能”,需要考虑相当复杂的使用规则

我认为这不会直接影响整理顺序(当然欢迎任何德国人纠正我),所以也许这是一个有争议的问题。

于 2009-11-25T08:52:45.873 回答
2

不,“完整案例映射”是一个代码点需要被多个新代码点替换的情况。简单的案例映射是单个代码点替换。

如果您想自己实现它,那么 Unicode CaseFolding.txt文件对于实现这一点至关重要。请注意状态字段代码“T”,专门用于处理土耳其语 I 问题。

于 2009-11-25T17:19:21.713 回答