Pen*_*m10 29 java sqlite android contactscontract
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" +
(mShowInvisible ? "0" : "1") + "'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
Run Code Online (Sandbox Code Playgroud)
什么COLLATE LOCALIZED ASC
代表什么?
eri*_*ric 21
它指示SQLite适当地对非ASCII字符进行排序.具有变音符号的字符(有些称为重音符号)具有比字符Z更高的字节代码,因此纯ASCII类型不适合许多外语.
例如,大写A char的字节代码是0x41
,而大写字母Z char是0x5A
.然后我们有Á(资本A accute),其中Unicode代码0x00C1
.因此,一个普通的字节代码排序将导致Á在Z之后.
但是在具有这种特征的语言中,惯例是将具有变音符号的语言放在那些就像没有变音符号那样.所以Á应该与平原A一起,至少在B之前.
为了说明,我们在下面列出了使用字节码排序的名称:
现在使用COLLATE LOCALIZED
它将按字符的"基础"排序:
dan*_*n04 12
COLLATE是一个SQL运算符,允许您覆盖字符串的默认排序顺序.例如,"COLLATE NOCASE"执行不区分大小写的比较,"COLLATE BINARY"执行区分大小写的比较.
SQLite C接口允许您定义自定义归类(http://www.sqlite.org/c3ref/create_collation.html).