关于android sqlite 的中文排序

原创
2016/11/22 17:58
阅读数 4.5K

sqlite 的默认编码是unicode,但是没有排序编码,只提供了实现排序的接口。最近开发中的一个android项目用到sqlite,出现了纠结的问题,用中文字段需要按拼音首排序的时候顺序惨不忍睹。参阅了各种解决方案,有增加一个拼音字段的,有自建拼音库等解决方案,最终都觉得不理想。

后来翻了一下android的SQLite驱动提供的方法,发现可以设置本地化语言,如下:

SQLiteDatabase db = getReadableDatabase();
db.setLocale(Locale.CHINESE);//设置本地化

调试发现查无数据,经过一通折腾,最后发现在SQL语句中排序时还需要指定使用本地化,如下:

SELECT * FROM ProfileInfo ORDER BY Name COLLATE LOCALIZED ASC

OK,排序正常按照中文拼音进行排序。