Un ordinateur ne traite que des nombres. Pour lui permettre de traiter des caractères, il faut affecter à chacun des caractère un nombre qui le représente. L'ancêtre des codages c'est le code Morse. C'est un codage analogique. Le premier codage numérique c'est le code Bodot, utilisé pour les télex. L'codage Bodot était utilisé pour perforer une bande de papier qui, ensuite, passée dans un lecteur, restituait son contenu. Ce code utilise cinq positions. Chaque position peut avoir un trou ou pas (Voir tableau). Ce code permet d'encoder 32 signes différents.
Avec l'informatique sont apparus le code ASCII[1] et le code EBCDIC[2]. le code ASCII utilise 7 bits pour encoder les caractères. Celà permet d'encoder 128 signes différents. les 32 premières valeurs sont des caractères de contrôles (tabulation, fin de ligne...). Dans les 96 valeurs restantes on trouvera 26 lettres minuscules, 26 lettres majuscules, 10 chiffres et les signes de ponctuation (,;:.!?=+...).
Pour pouvoir encoder les caractères accentués, il à fallu passer à 8 bits qui permettent 256 valeurs. Malheureusement, les langues à alphabet latin utilises des combinaisons de caractères accentuées suffisamment variées pour que les 128 valeurs ajoutées ne soient pas suffisantes pour les encoder tous. Par ailleurs, chacun y est allé de son codage particulier. Dans Windows au début c'est le codage ANSI qui a été utilisé. IBM, dans le DOS utlisait des pages de code suivant les langues, par exemple la page de code 850 pour l'Europe occidentale. Pour compliquer les choses, le codage ISO-8859-1 (aussi appelé ISO Latin 1) est presque, mais pas tout à fait équivalent à le codage Windows Windows-1252. Et le Mac utilisait sa propre table de codage MacRoman.
Pour réunifier tout ça, une nouvelle norme a été créée, Unicode. Cette norme utilise deux octets soit 16 bits pour encoder les caractères des langues latines et non latines. Pour simplifier l'utilisation d'Unicode et assurer la compatibilité ascendante avec l'ASCII et le ISO-8859-1, on a créé le codage UTF-8. Il existe aussi l'UTF-16. L'UTF-8 permet une compatibilité ascendante avec ISO-8859-1. Unicode comporte un élément supplémentaire mais optionnel par rapport aux autres codages, c'est le BOM[3]. Ces deux octets, placé tout au début du fichier, permettent à l'origine de connaître l'ordre des octets. Quand ils sont présents, ils permettent aussi de savoir avec certitude que le fichier est encodé en UTF-8.
Concrètement
Editeur de texte
Quand on ouvre un fichier texte avec un éditeur, celui-ci n'a pas d'information sur le codage utilisé lors de la précédente sauvegarde. Il affichera donc les caractères le plus souvent dans son codage par défaut.
Voici par exemple les cas de figure suivants :
- Texte encodé en UTF-8, décodé en ISO-Latin-1 par un éditeur
- Texte encodé en UTF-8, décodé en MacOSRoman par un éditeur
- Texte encodé en ISO-Latin-1, décodé en MacOSRoman par un éditeur
- Texte encodé en MacOSRoman, décodé en ISO-Latin-1 par un éditeur
Page HTML
Lors de la visualisation d'une page HTML, le codage peut être indiqué à plusieurs endroits.
- dans le header
- Dans un document XML
- <?xml version="1.0" encoding="iso-8859-1"?>
- dans la balise doctype. Il y a une valeur par défaut en fonction de la version du HTML annoncée :
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- Dans la balise meta content type
- <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
Note aux utilisateurs de Microsoft Word
Dans Word, par défaut, l'apostrophe droite "'" est remplacée par l'apostrophe courbe "’", et le guillemet anglais droit """ est remplacé soit par le guillemet français "«", soit par le guillemet anglais courbe "“" suivant la version. Or l'apostrophe courbe et le guillemet anglais courbe ne se trouvent pas dans les tables ISO-8859. Lors d'un copier/coller, ces caractères risquent d'être transformés en signes incompréhensibles. Pour résoudre ce problème, il y a plusieurs solutions :
- Utiliser une système complètement Unicode
- Supprimer la substitution automatique dans Word : Menu outil->Corrections automatiques, puis visiter les différents onglets "Lors de la frappe" et "Mise en forme automatique".
Représentation partielle du code Baudot à 5 moments.
Dans ce tableau, un "0" représente un trou dans le ruban de papier.
00| | | | | |
01| | | | |0|
02| | | |0| |
03| | | |0|0|
04| | |0| | |
05| | |0| |0|
06| | |0|0| |
07| | |0|0|0|
08| |0| | | |
09| |0| | |0|
10| |0| |0| |
11| |0| |0|0|
12| |0|0| | |
13| |0|0| |0|
...
31|0|0|0|0|0|

