我在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()比较字符串数据,无论文本编码如何。
答案 0 :(得分:1)
SQLite的C API允许安装new collation sequences。 Android API不会公开这些功能,但至少会安装两个额外的排序规则:
除了SQLite的默认
BINARY
整理器之外,Android还提供了两个LOCALIZED
,它随系统的当前语言环境而变化,而UNICODE
则是Unicode整理算法而非定制的到当前的语言环境。