iOS下的Unicode问题

Mig*_*l E 1 unicode objective-c ios

我有一个带有单词列表的SQLite数据库.在表格中有一个单词列表,其中包含单词"você".这个词在unicode"voc\U00ea"中有这种表示.

我发现同一个单词可以使用相同的视觉输出具有以下表示:

"voc\U00ea",
"voce\U0302"
Run Code Online (Sandbox Code Playgroud)

当我使用第二个表示查询我的数据库时,它返回空白.有没有人知道使用两种表示的查询工作方式而不重复表中的记录?

谢谢,米格尔

Yuj*_*uji 6

这两种形式称为nfc(正常形式组成)和nfd("正常形式分解").这封信\U0302被称为"组合旋律",它修改了前面的字母.

要应对这种情况,请执行以下操作:

  1. 选择一个规范化.通常选择nfc是个好主意.(尽管iOS/OS X文件系统使用nfd.)
  2. 在将字符串放入数据库之前,请始终规范化.在iOS中,您可以使用precomposedStringWithCanonicalMappingprecomosedStringWithCompatibilityMapping.要了解规范映射和兼容性映射之间的区别,请参阅此说明.
  3. 在执行查询之前,始终将查询规范化为相同的普通表单.