Informatique


Le codage des caractères

Aller à


Exemple

Le browser utilise une table de caractères de référence pour interpréter les caractères du fichier qui s'ouvre.
Dès lors, si cette table ne correspond pas à la table de caractères qui a été utilisée pour écrire le fichier les nombres binaires représentants les caractères ne correspondront pas parfaitement et l'affichage dans le brouser sera altéré.

Le code suivant a été encodé avec la table de caractères ANSI (ou Windows-1252), qui est utilisé par le Blo-Notes de Windows.

Démo
	<!doctype html>
	<html lang="fr">
	<head>
		<meta charset="utf-8">
	</head>
	<body>
		çà va très bien
	</body>
	</html>

Coder des caractères

Le codage des caractères est une convention qui permet, à travers un codage connu de tous, de transmettre de l’information textuelle. Cela consiste à représenter chaque caractère, par un motif visuel ou sonore.
Les techniques des ordinateurs reposent sur l’association d’un caractère à un nombre.

Il existe donc des tables qui permettent de lié un caractère avec une représentation numérique binaire, comme par exemples: ASCII, UNICODE,


Le code ASCII

Le code ASCII (American Standard Code for Information Interchange), codé sur 7 bits, définit un jeu de 128 caractères numérotés de 0 à 127. Sept bits suffisent donc à les coder.
Cependant, comme la plupart des ordinateurs travaillent sur des données représentées sur un nombre de bits multiple de huit, les caractères ASCII sont codés sur un byte, le bit de poids fort étant 0.

Le jeu de caractères ASCII comprend:
  • les 26 lettres de l’alphabet latin en versions majuscules et minuscules,
  • les 10 chiffres
  • les symboles de ponctuation y compris l’espace
  • les couples de parenthèses, crochets et accolades
  • et quelques autres symboles divers

Mais un gros souci apparaît! Les caractères nécessaires au anglo-saxons sont tous couverts, par contre, les caractères accentués des langues européennes ne peuvent être représentés car il n'y a pas assez de représentations possibles!


Les extensions ISO-8859

Les codes ISO-8859 sont au nombre de 16 et désignés par ISO 8859-n où n est un entier compris entre 1 et 16.
Tous ces codes définissent chacun un jeu de 224 caractères codés de 0 à 127 et de 160 à 255 (les codes de 128 à 159 sont inutilisés).
Tous ces caractères peuvent et sont représentés sur 8 bits.

Les caractères de codes compris entre 0 et 127 sont ceux du code ASCII. Les codes ISO 8859 se distinguent par le jeu des caractères de 160 à 255.
Pour avoir les caractères accentués du français il faut utiliser l’ISO 8859-1 (parfois appelé LATIN-1) ou l’ISO 8859-15 (parfois appelé LATIN-15) qui ne se distingue du précédent que par le remplacement de quelques caractères dont le ¤ par €. Avec ISO 8859-1 (ou ISO 8859-15), le é est codé 233.


UNICODE

Les diverses extensions du code ASCII, dont les ISO 8859, présentent l’inconvénient d’être incompatibles entre elles, et le plus souvent d’être spécialisées pour un jeu de caractères lié à une langue.
Comment alors coder dans un même document des textes rédigés avec des alphabets aussi divers que les alphabets latin, cyrillique, grec, arabe, ... ?

En 1990 on a développé un système d'encodage universel, Unicode, qui regroupe tous les caractères de toutes les langues de la planète.
Unicode en est actuellement à sa 12ième version (mars 2019) et recense plus 135000 caractères, attribue à chacun d’eux un nom et un numéro exprimé sous la forme U+XXXX où XXXX représentent 4 chiffres hexadécimaux.

Les caractères de numéros compris entre 0 et 127 sont ceux du code ASCII. Ceux de code compris entre 160 et 255 sont ceux du code ISO 8859-1.


Des anglo-saxons pas contents

Les anglo-saxons on toujours pris l'habitude de coder les caractères en ASCII, table de codage n'exigeant que 8 bits (et même 7 pour l'ASCII de base), ils n'ont pas été très content de devoir tenir compte des autres langues parlées dans le monde et d'être donc obligés d'utiliser des tables de codages nécessitant plusieurs bytes par caractères!
... ce qui multipliait le poids des fichiers de 2, 3, 4 et parfois plus!

On a donc imaginé UNICODE et à partir de celui-ci un système de codage dynamique, pouvant compter de 1 à 4 bytes: utf-8 était né.

Les caractères ASCII étant tous regroupés dans le premier byte nos amis anglo-saxons se sont un peu calmés.


Les différents encodages des caractères Unicode

Unicode se contente de recenser, nommer les caractères et leur attribuer un numéro. Mais il ne dit pas comment ils doivent être codés en informatique.

Plusieurs codages des caractères Unicode existent :
  • UTF-32 qui code chaque caractère sur 32 bits (soit quatre bytes)
  • UTF-16 qui code chaque caractère sur 16 ou 32 bits (soit deux ou quatre bytes)
  • UTF-8 qui code chaque caractère sur 8, 16, 24 ou 32 bits (soit un, deux, trois ou quatre bytes)
Le plus couramment utilisé, notamment pour les pages Web, est UTF-8.