Classement alphabétique informatisé

Le classement alphabétique est le classement des caractères d'une écriture dans un ordre défini par un alphabet (le plus souvent), pour une langue donnée. Cet article décrit la question d'un point de vue informatique. On se reportera à Classement alphabétique pour des explications plus générales et historiques.

Sommaire

Principe

Le principe consiste à comparer deux mots, caractère par caractère.

Si les n premiers caractères sont identiques, on prend le suivant. Si le n-ième caractère diffère, l'ordre est établi. Si le mot est fini, le mot est considéré comme venant en premier.

Il convient donc pour classer correctement de connaître :

ASCII

Pour des raisons d'habitudes et d'ancienneté du principe, de nombreux développeurs utilisent le classement ASCII. Ce classement est généralement mauvais, car incompatible avec de nombreuses langues, en particulier pour les lettres accentuées et les habitudes nationales.

On trouvera ci-dessous des classements plus pertinents.

Pour les programmeurs

Les programmeurs d'application devront donc faire attention aux spécificités locales. Par exemple la fonction str[n]cmp de la librairie string.h de C compare simplement des codes des caractères. Il faut, soit réécrire cette fonction, soit utiliser des fonctions propres des bibliothèques disponibles sous les systèmes d'exploitations cible.

Notons que ICU et Java sont portables. Visual Basic et Perl aussi, travaillant en Unicode.

Bibliothèques de Microsoft

Par exemple en programmation Windows :

Bibliothèque d'UNIX

[À développer]

Bibliothèque ICU

[À développer]

De nombreuse informations sont disponibles dans les sites suivants :

Bibliothèques de GNU/Linux

Sous GNU/Linux, on peut utiliser la bibliothèque ICU.

Bibliothèques de Java

Sous java, le tri est natif. Il est certainement paramètrable avec des locales.

PHP

[À développer]

PHP est utilisé par Wikipédia.

mySQL

mySQL est utilisé par Wikipédia. MySQL 4.0 sait faire du tri allemand avec un jeu de caractères étendu : latin1_de.

La fonction 4.1 semble savoir faire le vrai tri.

Un HOWTO sur le classement alphabétique

Ordre ASCII

Notons que wikipédia considére l'odre ASCII comme un ordre alphabétique.

Wikipédia sur ce point est touché par le bug 164. Pour les développeurs, on pourrait ajouter le commentaire suivant.

It looks like mySQL 4.1 support nationals collate of utf-8
http://dev.mysql.com/doc/mysql/en/Charset.html
http://bugzilla.wikipedia.org/show_bug.cgi?id=164

Articles connexes

Liens externes

Algorithmes informatiques

See also: Classement alphabétique informatisé, ASCII, Alphabet, C (langage), Caractère, Chaînes de caractères, Classement alphabétique, Digramme, GNU/Linux, Graphème