我试图评估不区分大小写的UTF-8字符串比较的不同策略。不知道语言的情况下折叠UTF-8
我已经阅读了一些来自Unicode联盟的材料,对ICU进行了实验并试图想出各种质量的实施方案。
多次我见过简单案例映射和完整案例映射之间的不同文本,我想确保完全理解它们之间的差异。
当我阅读它时,简单案例映射是“上下文无关”的,即不需要知道有效载荷是什么语言。由于突厥语“I /ı/İ/ i”的崩溃,这将给出近似的结果。
另一方面,完全大小写映射需要知道有效载荷的语言才能执行映射。有了这些额外的信息,它可以采取特殊措施,以涵盖作为突厥语字符串的“Kim”应该成为大写的“KİM”的情况,而作为英文字符串的“Kim”应该成为大写的“KIM”的情况。
我有这个权利吗?
是否还有其他示例针对不同语言折叠不同的“多面”代码点?
谢谢!
更新:提到简单案例映射为语言无关的来源之一是ICU's documentation。我将其解释为Unicode的真相,但也许它只是实现的一个声明?
所以他们都需要语言环境,对吧?我使用不使用CaseFolding.txt的第三方库(PCRE),但仅使用来自UnicodeData.txt的案例信息,并且不需要语言上下文(就我所知,既不明示也不隐含)。我想这可能是简单情况下的一个有效妥协。 – 2009-11-26 06:47:21
当然。如文件中所述,您需要知道何时忽略具有“T”状态代码的记录。 – 2009-11-26 12:29:33
就我所见,T状态代码出现在CaseFolding中。txt,而不是UnicodeData.txt。但是你是否确实说过_correct_ folding只能通过语言环境的知识来完成?我正在寻找一种不需要上下文的妥协方案,并非100%完美......但也许这是通往温暖之路的第一步? – 2009-11-26 15:10:04