案例折叠UTF-8不知道语言

Kim*_*man 5 c utf-8 case-insensitive

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

我已经阅读了Unicode联盟的一些材料,尝试了ICU,并尝试提出各种实施质量的替代方案.

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

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

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

我做对了吗?

是否存在针对不同语言折叠不同的"多面"代码点的其他示例?

谢谢!

更新:其中一个提到简单案例映射作为语言独立的来源是ICU的文档.我把它解释为Unicode真理,但也许它只是一个实现的声明?

Han*_*ant 3

不,“完整大小写映射”是一种大小写,其中一个代码点需要被多个新代码点替换。简单的大小写映射是单个代码点替换。

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