Recherchez sur tout Techno-Science.net
       
Techno-Science.net : Suivez l'actualité des sciences et des technologies, découvrez, commentez
Catégories
Techniques
Sciences
Encore plus...
Techno-Science.net
Partenaires
Organismes
 CEA
 ESA
Sites Web
Photo Mystérieuse

Que représente
cette image ?
 A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | +
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.

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 :

  • l'ordre dans lequel sont classées les lettres d'un alphabet donné, ordre qui dépend de règles historiques différant d'une langue à l'autre même si elles utilisent un alphabet très proche ;
  • l'existence de graphèmes complexes (ligatures, digrammes) à prendre en compte (dans une langue, tel digramme comptera pour une lettre et aura son rang ( Mathématiques En algèbre linéaire, le rang d'une famille de vecteurs est la dimension du sous-espace vectoriel engendré par cette famille. Le théorème du rang lie le...), dans telle autre, non).

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.

La Wikipédia (Wikipédia (prononcé /wi.ki.pe.dja/) est une encyclopédie, multilingue, universelle, librement diffusable, disponible sur le Web et écrite par les internautes grâce à la technologie wiki. Elle a été...)

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 (Graphie) 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.

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 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 (En programmation, BASIC est un acronyme pour Beginner's All-purpose Symbolic Instruction Code. qui désigne une famille de langages de programmations de haut niveau.) gère l'unicode mais ne fonctionne pas sur des systèmes tels que Linux (Au sens strict, Linux est le nom du noyau de système d'exploitation libre, multitâche, multiplate-forme et multi-utilisateur de type UNIX créé par Linus Torvalds, souvent désigné comme le noyau...).

Bibliothèques de Microsoft (Microsoft Corporation (NASDAQ : MSFT) est une multinationale américaine de solutions informatiques, fondée par Bill Gates et Paul Allen, dont le revenu annuel a atteint 44,28 milliards de dollars en 2006 et emploie 76 000 personnes...)

Par exemple en programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire...) pour Windows :

  • on peut utiliser la fonction CompareString ;
  • On peut utiliser la bibliothèque ICU.

Bibliothèque d'UNIX

  • On peut utiliser la bibliothèque ICU.

[À 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 (PHP (sigle de PHP: Hypertext Preprocessor), est un langage de scripts libre principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant...)

[À 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'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
Source: Wikipédia publiée sous licence CC-BY-SA 3.0.

Vous pouvez soumettre une modification à cette définition sur cette page. La liste des auteurs de cet article est disponible ici.