我正在尝试评估不区分大小写的UTF-8字符串比较的不同策略。
我已经阅读了Unicode联盟的一些材料,尝试了ICU,并试图提出各种实施质量的替代方案。
我曾多次看到简单案例映射和完整案例映射之间的文本不同,我想确保完全理解差异。
在我阅读时,简单案例映射是“无上下文”,即不需要知道有效载荷是什么语言。由于突厥语“I /ı/İ/ i”崩溃,这将给出近似结果。
另一方面,我做对了吗?
是否有其他“多面”代码点的例子,这些代码点对于不同语言的折叠方式不同?
谢谢!
更新:其中一个提及简单案例映射为语言无关的来源是ICU's documentation。我把它解释为Unicode真理,但也许它只是一个实现声明?
答案 0 :(得分:2)
嗯......对于大多数西方语言来说,辅音组合“SS”会缩写为“ss”,但在德语中它可能会成为特殊字母“ß”。这只是“可能”,需要考虑usage rules。
我认为这并不直接影响整理顺序(当然欢迎任何德国人纠正我),所以也许这是一个没有实际意义的点。
答案 1 :(得分:2)
不,“完整案例映射”是一个外壳,其中一个代码点需要被多个新代码点替换。简单的案例映射是单个代码点替换。
如果您想自己实现,那么Unicode CaseFolding.txt文件对于实现这一目标至关重要。请注意状态字段代码“T”,特别是处理土耳其语问题。