O que coloca as ASC localizadas representam?
-
24-09-2019 - |
Pergunta
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);
}
O que COLLATE LOCALIZED ASC
apoiar?
Solução
Alega é apenas uma das pessoas que falam para o tipo (bem o que). Portanto, isso é uma ordem de classificação com base em preferências localizadas (ou seja, alfabeto e convenções do idioma atual) em ASCordem final.
Outras dicas
Ele instrui o SQLite a classificar os personagens não-ASCII adequadamente. Os chars com diacríticos (alguns os chamam de sotaques) têm códigos de bytes mais altos que o caractere Z; portanto, um tipo ASCII simples não se encaixaria em muitas línguas estrangeiras.
Por exemplo, a capital de um byte de char é 0x41
E o Capital Z Char's é 0x5A
. Então temos o á (capital um difícil) que o código no unicode é 0x00C1
. Portanto, uma classificação de código de bytes simples resultaria que o á foi depois do Z.
Mas em idiomas que têm esse tipo de personagem, a convenção é colocar aqueles com diacríticos como se não tivessem o diacrítico. Portanto, o á deve estar junto com a planície A, pelo menos antes de B.
E para ilustrar, temos abaixo uma lista de nomes classificados usando o bytecode:
- Brenda
- Debby
- George
- Álvaro
- Érico
Agora usando o COLLATE LOCALIZED
isso classificaria pela "base" do personagem:
- Álvaro
- Brenda
- Debby
- Érico
- George
A Collate é um operador SQL que permite substituir o pedido de classificação padrão para strings. Por exemplo, "colar nocase" faz comparação insensível ao caso e "colar binário" faz uma comparação sensível ao caso.
A interface sqlite c permite definir colações personalizadas (http://www.sqlite.org/c3ref/create_collation.html).