objective-c - iOS下的Unicode问题

标签 objective-c ios unicode

我有一个带有单词列表的SQLite数据库。在一个表中,有一个单词列表,其中包含单词“você”。这个词在Unicode“voc \ U00ea”中具有这种表示形式。

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

"voc\U00ea",
"voce\U0302"

当我使用第二种表示形式查询数据库时,它返回空白。有谁知道使用两种表示方式进行查询而不复制表中记录的方式?

谢谢,
米格尔

最佳答案

这两种形式被称为nfc(正态形式组成)和nfd(“正态形式分解”)。字母\U0302被称为“组合回旋符”,它会修改前面的字母。

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

  • 选择规范化。通常选择nfc是个好主意。 (尽管iOS / OS X文件系统使用nfd。)
  • 在将字符串放入数据库之前,请始终进行规范化。在iOS中,您可以使用 precomposedStringWithCanonicalMapping precomosedStringWithCompatibilityMapping 。要了解规范映射和兼容性映射之间的区别,请参见this description
  • 在执行查询之前,请始终将查询规范化为相同的标准格式。
  • 关于objective-c - iOS下的Unicode问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803655/

    相关文章:

    ios - UITableViewCell 附件复选标记在单元格上重复

    ios - 在搜索按钮上隐藏键盘单击代码创建的搜索栏

    ios - PresentView 和 UIAnimation View 冲突?

    objective-c - 没有 UITableViewController 的 UIRefreshControl

    iphone - objective-c 单例内存释放

    ios - OpenGL ES 2.0 渲染到纹理

    ios - Swift - 如何检测方向变化

    c# - C# 16 位字符如何编码所有 Unicode 字符?

    python - Unicode 字符是 Geraldo/ReportLab 生成的 PDF 中的框

    unicode - 什么是超长形式/编码?