Projet IDAPA

Accueil > Ressources > SPIP > Encodage et interclassement des chaînes de caractères

Encodage et interclassement des chaînes de caractères

Encodage du texte

lundi 19 octobre 2009, par RAUX

La lecture des tables d’une base de données est dirigée par l’inter classement et par le type des données associés à chaque champ de chaque table. Je vais donc traiter principalement de ce sujet, afin de compléter celui de Mlle Loison, qui traite l’impact de ces jeux de caractères sur et entre les tables d’une base de données.

Ainsi à la confection de la base de données, on peut fixer l’encodage des caractères. Commençons par le type de caractère, il y en a 3 qui acceptent le caractère texte. Tout d’abord le type "TEXT", il prend en compte les chaînes de caractères seulement. Ensuite il y a le type "VARCHAR(n)", avec "n" le nombre de caractères délimité par l’utilisateur, qui permet a un champ d’une table de comporter des caractères alpha-numériques, et enfin le "BLOB" dit Binary Large Object soit un " grand objet binaire ", cette fonction permet à l’utilisateur d’entrer n’importe quelle caractère ou image, qui ne seront en aucuns cas modifiés par phpmyadmin, et ainsi qui resteront comme tels. Mais la principale différence est entre "varchar" d’une part et "blob/text" d’autre part, dans le premier cas les données sont incluses avec les autres données de la table, dans le même fichier. Dans l’autre elles sont stockées dans des fichiers complémentaires, c’est à dire que les types "blob" ou "text" créent une sorte de lien vers un nouveau fichier créé en dehors de la table, où le nombre de caractères maximum y est supérieur. Dans la table elle-même on ne trouve qu’un pointeur vers les données, soit vers le texte.

J’en viens à l’inter classement qui permet d’ordonner correctement une liste de caractères. Il est nécessaire d’indiquer un inter classement pour le type TEXT et le type VARCHAR. Par exemple, pour le jeu de caractères correspondant aux langues latines, il faut pouvoir expliquer au logiciel que le "é" vient après le "e" ou que les majuscules viennent après les minuscules. Ces précisions sont définies pour une seule langue en principe, sauf bien sûr si deux langues utilisent les même caractères dans ce cas il y a des inter classements adaptés.

Afin de mieux comprendre je vais vous expliquer le rôle de l’ASCII, qui peut définir 128 caractères sur 7 bits (mémoire de stockage en octets, plus on utilise de bits, plus on aura de mémoire ou plus précisément, de caractères à utiliser). Au début de l’informatique 7 bits suffisaient, mais il a fallu repenser les caractères utiles, ainsi, dans le but d’augmenter ce nombre de caractères, en fonction des lettres accentuées, ou en fonction des autres langues telles que les glyphes arabes ou chinois, on a utilisé le huitième bit permettant de créer 128 caractères supplémentaires. L’encodage part du fait qu’un caractère correspond à un suite de chiffres binaires (0 et 1),ainsi la place que prendra ce caractère dépendra de cette suite binaire.

De plus le logiciel, grâce à un inter classement adapté, peut retenir des exceptions. De ce fait il est possible pour lui d’associer le "e" à "E", mais aussi à "é", "è" ou "ê". Ainsi si on effectue une recherche sur le mot "caractere", cela nous retournera "Caractere","caractère", etc.

Par défaut, un inter classement est déjà désigné pour tout les champs de toutes les tables d’une base de données. Il est d’ailleurs possible de spécifier un inter classement pour une base de données, pour une table, ainsi que pour les champs d’une table. C’est à dire que l’on va pouvoir poser des exceptions à une table dans une base de données, et pareillement à un champ dans une table, ainsi on pourra choisir un champ précis ou une table précise où on souhaite un inter classement différent des autres champs ou autres tables.
Site principalement utilisé : http://www.siteduzero.com/tutoriel-3-36943-comprendre-les-jeux-de-caracteres-et-interclassements.html#ss_part_1