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.
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 :
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.
Notons que la Wikipédia considère l'ordre ASCII comme un ordre alphabétique. Cf. cette page sur Meta. 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
On trouvera ci-dessous des classements plus pertinents.
Les programmeurs d'application devront donc faire attention aux spécificités locales. Par exemple la fonction str[n]cmp de la bibliothèque string.h de C compare simplement des codes des caractères ASCII. Il faut, soit bricoler une amélioration de cette fonction, soit utiliser des fonctions propres des bibliothèques disponibles sous les systèmes d'exploitation cible.
Notons que ICU, Java, Python et Perl sont compatibles unicode et portables. Visual Basic gère l'unicode mais ne fonctionne pas sur des systèmes tels que Linux.
Par exemple en programmation pour Windows :
[À développer]
[À développer]
De nombreuse informations sont disponibles dans les sites suivants :
Sous GNU/Linux, on peut utiliser la bibliothèque ICU.
Sous java, le tri est natif. Il est certainement paramétrable avec des locales.
[À développer]
PHP est utilisé par Wikipédia.
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.
Notons que wikipédia considére l'ordre 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