unichar c1 = 12098;
unichar c2 = 25991;
当我打印 This characters 显示以下值时,
(unichar) $2 = U+2f42 u'⽂'
(unichar) $3 = U+6587 u'文'
相同的字符但不同的十六进制代码。我想在这种不同的编码中识别相似的字符。喜欢下面
if(c1 == c2){
}
实际情况比这复杂。一组文本是使用字形从 pdf 文件编码中提取的文本,另一组是搜索文本词。
提前致谢。
最佳答案
Same character but different hex code.
不完全相同的字符。一个是中文的写字;另一个是指许多相关词使用的部首。这就像字母“我”和单词“我”之间的区别。
差异是如此微不足道以至于 Unicode 宁愿不关心它,但为了兼容性不得不关心它。部首 U+2F42 对另一种形式具有“相容性分解”,因此您可以通过先将两个字符串归一化为 Normal Form KD 来比较它们是否相等。在 NSString 中,该操作是 decomposedStringWithCompatibilityMapping .
I want to identify similar characters
这可能是一个更广泛的问题 - 需要查看更多示例才能确定仅兼容性规范化是否可以满足您的需求。
识别通常看起来相似的字符是一项开放式任务。例如,不相关的希腊语 ν (nu) 和拉丁语 v 应该匹配吗?数字 0 和字母 O 怎么样?
Unicode TR39有confusables的概念对于通常在视觉上相似的字符,这是针对安全问题但可能有所帮助。 NSString 没有内置的东西来比较这些,所以你必须下载 confusables.txt并自己逐个字符映射。
关于ios - 相同的字符显示不同的十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22906103/