Codage de caractères

Un article de Wikipédia, l'encyclopédie libre.

Pour l'action de cacher le sens de l'information, voir chiffrement.

Un codage de caractères est un code qui associe un jeu de caractères d'une langue naturelle (comme un alphabet ou un syllabaire) avec un jeu de quelque chose d'autre, comme par exemple des nombres ou des signaux électriques. Par exemple, le code Morse (qui associe l'alphabet latin à une série de pressions longues et de pressions courtes sur le manipulateur Morse du télégraphe) et le code ASCII (qui code les lettres, les chiffres et d'autres symboles comme des entiers codés sur 7 bits) sont des codages de caractères.

Il est indispensable, pour l'échange d'information sur l'Internet, par exemple, de préciser le codage utilisé. Ne pas le faire peut transformer un document en un fouillis incompréhensible. Qui n'a jamais vu une page Web avec des points d'interrogation à la place des accents, ou un courriel avec des =E9 en lieu et place des e accent aigu ?

Dans certains contextes (en particulier dans les communications et dans l'utilisation de données informatiques), il est important de distinguer un répertoire de caractères, qui est un jeu complet de caractères abstraits qu'un système supporte, et un jeu de caractères codés ou codage de caractères qui spécifie comment représenter un caractère en utilisant un entier.

Sommaire

[modifier] Evolutions de l'ASCII vers l'unicode

Le premier codage largement répandu fut l'ASCII. Pour des raisons historiques (les grandes sociétés associées pour mettre au point l'ASCII étaient américaines) et techniques (7 bits disponibles seulement pour coder un caractère), ce codage ne prenait en compte que 27 soit 128 caractères. De ce fait, l'ASCII ne comporte pas les caractères accentués, les cédilles, etc. utilisés par des langues comme le français. Ceci devint vite inadapté et un certain nombre de méthodes ad-hoc furent utilisées pour l'étendre.

L'ISO a donc défini de nouvelles normes, ISO 8859-1, ISO 8859-2, etc. jusqu'à ISO 8859-15. Ces jeux de caractères permettent de coder la plupart des langues occidentales. Le français utilise le plus souvent ISO 8859-1, aussi nommé latin1, ou ISO 8859-15 (latin9), qui a l'avantage de contenir des caractères comme le « œ » ou le «  ». Selon les langues utilisées, on peut trouver des centaines d'autres codages (EUC-JP est par exemple bien adapté au Japonais).

Le besoin de supporter de multiples écritures, incluant celles de la famille CJC, demandait un nombre nettement plus élevé de caractères supportés et nécessitait une approche systématique du codage de caractère utilisé, plutôt que les méthodes ad-hoc précédentes. Le codage Unicode a pour ambition d'être un surensemble de tous les autres, et est souvent représenté en UTF-8 ou en UTF-16.

Le répertoire complet d'Unicode contient près de 100 000 caractères, chacun possédant un unique code entier compris entre 0 et hexadécimal 10FFFF (soit un peu plus de 1,1 million - il existe donc des entiers auxquels aucun caractère n'est associé). Deux autres répertoires fréquemment utilisés, le code ASCII et l'ISO 8859-1, sont respectivement identiques aux 128 et 256 premiers caractères d'Unicode.

[modifier] Différence entre «codage de caractères» et «forme de codage»

Le terme codage de caractères est parfois confondu avec la façon dont les caractères sont représentés par une certaine séquence de bits, ce qui implique une forme de codage où le code entier est converti en plusieurs codets (c'est-à-dire des valeurs codées) entiers qui facilitent le stockage dans un système qui gère les données par groupe de bits de taille fixe. Par exemple, les entiers plus grands que 65535 ne peuvent pas être représentés sur 16 bits, c'est pourquoi le codage UTF-16 représente ces grands entiers comme des couples d'entiers inférieurs à 65536 et qui ne sont pas associés à des caractères (par exemple, 10000 - en hexadécimal - devient D800 DC00). Ce plan de codage convertit alors les valeurs de ces codes en une suite de bits et ce en prenant garde à un certain nombre de contraintes comme la dépendance vis-à-vis de la plateforme sur l'ordre final des octets (par exemple, D800 DC00 devient 00 D8 00 DC sur une architecture Intel x86). Un jeu de caractères ou page de code abrège ce procédé en associant directement aux caractères abstraits des séquences de bits spécifiques. L'Unicode Technical Report #17 explique cette terminologie en profondeur et fournit davantage d'exemples.

[modifier] Voir aussi

[modifier] Codages de caractères populaires, par pays

[modifier] Amérique

[modifier] États-Unis

[modifier] Canada

à compléter

[modifier] Union européenne

[modifier] France

[modifier] Grèce

  • UTF-8
  • ISO 8859-7, avec ou sans l'euro ?

[modifier] Roumanie

à compléter

[modifier] Lituanie

[modifier] Afrique

[modifier] Maghreb

[modifier] Asie

[modifier] Autres codages de caractères populaires

[modifier] Liens externes