Android SQLite通过utf8整理/排序

时间:2013-01-22 20:53:44

标签: android sqlite

我在Android上的SQLite表中有以下项目(表格标签有1列 - '名称'文字)

Beta
Work
Úpal
User

如果我在SQL Server中使用斯洛伐克语的排序规则和select * from tab order by name这些项目,它会正确输出排序为:

的项目
Beta
User
Úpal
Work

在斯洛伐克语中,带有重音的U - Ú应该在U之后排序。

在Android上的SQLite中,它按以下顺序输出:

Beta
User
Work
Úpal

我明白发生了什么,SQLite可能会使用字符代码来比较字符,而Ú就是在W之后。

我可以做些什么让它按照我的方式排序?它甚至可能吗? SQLite docs on COLLATION表示基本上所有排序规则都是二进制比较的变体,并且使用memcmp()比较字符串数据,无论文本编码如何。

1 个答案:

答案 0 :(得分:1)

SQLite的C API允许安装new collation sequences。 Android API不会公开这些功能,但至少会安装两个额外的排序规则:

  

除了SQLite的默认BINARY整理器之外,Android还提供了两个LOCALIZED,它随系统的当前语言环境而变化,而UNICODE则是Unicode整理算法而非定制的到当前的语言环境。