Android SQLITE Order by 无法正常工作 A 和 Ã

Android SQLITE Order by not working correctly A and Ã

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

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

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

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

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

如果你看一下 unicode character table 你会发现 Ã 是该列表中的编号 00C3,Z 是 005A (00C3 > 005A / Ã > Z)。

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

之后

这取决于 collation of your column. The sqlite C API allows you to define your own collation using sqlite3_create_collation(),但似乎没有通过 Android 的 Java-side API.

公开

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