【问题标题】:Android SQLITE Order by not working correctly A and ÃAndroid SQLITE Order by not working normal A and Ã
【发布时间】:2016-01-22 21:17:36
【问题描述】:

我有一个返回人名列表的查询,我按姓氏排序。

姓氏以Ã开头的人一直列在姓氏以Z开头的人之后

问题1:Ã应该在A之后,还是A的一部分,还是应该在Z之后

问题 2:如果它是 A 的一部分,我如何使用 Query order by 来控制它?

【问题讨论】:

    标签: android string sqlite sql-order-by


    【解决方案1】:

    这取决于您的专栏的collation。 sqlite C API 允许您使用sqlite3_create_collation() 定义自己的排序规则,但这似乎不会通过 Android 的 Java 端 API 公开。

    但是,SQLiteDatabase class documentation 提到 Android 会自动添加一些额外的排序规则。其中之一是LOCALIZED。这可能给你一个排序,其中 A 和 Ã 被认为是相同的(或至少是相邻的)——但是,结果会因用户选择的语言环境而异,所以如果你需要排序可能会很不方便对所有用户都一样。

    【讨论】:

      【解决方案2】:

      由于 Android 框架基于 Java 编程语言,字符默认使用 UTF-8 编码。

      如果您查看任何unicode character table,您会注意到 Ã 是该列表中的数字 00C3,Z 是 005A (00C3 > 005A / Ã > Z)。

      所以为了问你的问题1:Ã应该在Z之后

      【讨论】:

        猜你喜欢
        • 2016-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-11
        • 2015-06-28
        • 1970-01-01
        • 1970-01-01
        • 2012-11-11
        相关资源
        最近更新 更多