TUTORIEL TABLES CODES | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
1 : CODAGES | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Depuis les débuts de l'informatique, il a fallu coder les caractères utilisés, pour les stocker, les imprimer, les transmettre ...
Sans vouloir remonter de façon détaillée dans le temps on pourra citer les normes suivantes.
- EBCDIC - ASCII - ISO-8859-1 - cp850, cp852, ...
- Unicode
Les codages ci-dessus (autres qu'Unicode) utilisent l'octet comme unité de stockage.
Cela veut donc dire qu'il n'y a que 256 possibilités et même moins si l'on tient compte des caractère de contrôle.
Chaque évolution des besoins utilisateurs (caractères nationaux, monétaires, ...) entraîne la création d'une nouvelle norme.
Exemple : L'évolution 8859-1 vers 8859-15 lors de l'apparition de l'euro où l'on en a profité pour supprimer des caractères moins utilisés au profit de l'euro mais aussi de certains caractères nationaux.
Les échanges entre systèmes, mais aussi l'affichage de plusieurs codifications de caractères dans la même page HTML, font que les codages cpxxxx, iso-8859-x ont vécu et doivent céder leur place à Unicode.
Pour récupérer des tables non décrites ici voir Tables ISO8859 ou Tables Microsofts et d'autres tables dans les autres pages de ce site unicode.org.
1.1 : Unicode | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Unicode est la première norme qui sépare la liste des caractères et le codage. Chaque caractère unicode est représenté par une valeur unique.
Ce nombre n'est pas la représentation en mémoire du caractère, mais juste un identifiant.
Au départ Unicode a été prévu sur 16 bits avec un plan de base 0000-FFFF (BMP ::= Basic Multilingual Plane) , mais il évolue en fonction des besoins en définissant des plans suivants comme 10000-1FFFF (SMP ::= Supplementary Multilingual Plane) , 20000-2FFFF (SIP ::= Supplementary Ideographic Plane), ......
Un caractère est donc identifié par son point de code (un nombre qui précise son plan et son emplacement dans le plan) U+xxxx ou U+xxxxx ..... xxxx ::= plan de base 1xxxx ::= plan Tous les points de code entre U+0000 et U+10FFFF sont valides :
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ - même si certains sont réservés et non encore assignés à des caractères, │ │ - ou si certains points de code sont assignés à des non-caractères (par exemple U+FFFE ou U+FFFF) dont l’usage est interdit dans un texte, │ │ - ou sont réservés pour permettre le codage de n’importe quel texte conforme avec une des formes de transformation standard Unicode. │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
Donc un point de code valide n'est pas forcément utilisable (voir les réservés ou les interdictions).
Voir Le site unicode.org
Identifier un caractère par son point de codage ne permet que de définir une norme de représentation.
Pour le stockage (mémoire, fichier, ...) unicode s'appuie sur différentes formes de transformation :
UTF ::= Universal Transformation Format
- UTF-8 - UTF-16 - UTF-32
Ce sont ces formes de stockage qui vont permettre (avec leurs avantages et leurs inconvénients) de gérer les caractères unicode.
Le nombre 8, 16, 32 indique le nombre minimum d'octets nécessaire pour stocker le caractère.
Ainsi UTF-8 n'utilisera qu'un octet pour les valeurs comprises entre x00 et x7f (128 premier caractères), mais jusque 4 octets pour les valeurs suivantes.
Le fait d'utiliser une longueur variable est un bon point pour économiser la mémoire, mais demande un examen lourd pour localiser le nième caractère dans une chaîne.
En effet il faut examiner les n-1 premiers caractères pour trouver la position du nième.
UTF-16 stocke ses caractères sur deux octets ce qui couvre les besoins des langages modernes (qui sont tous dans le BMP).
UTF-32 stocke ses caractères sur quatre octets ce qui couvre à ce jour tout les plans d'unicode.
1.1.1 : UTF-8 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Le principe de base d'UTF-8 est de stocker les caractères en optimisant la place prise par les caractères.
Si le caractère fait partie des 128 premiers caractères il sera codé sur un octet dont le premier bit sera '0'.
Pour les caractères de 0080 à 7FFF, il faudra un octet commençant par '110' précédant un octet dont les deux premiers bits seront '10'.
Le premier octet aura donc 5 bits utiles et le dernier octet six bits utiles donc 11 bits utiles
Pour les caractères de 8000 à FFFF), il faudra un octet commençant par '1110' précédant deux octets dont les deux premiers bits seront '10'. (4+6+6::= 16 bits utiles)
Au delà ( de 10000 à 1FFFFF ) il faudra un octet commençant par '11110' précédant trois octets dont les deux premiers bits seront '10'. (3+6+6+6 ::= 21 bits utiles).
On pourrait coder un caractère tenant sur n octets sur n+1 octets, mais une telle forme (overlong) est interdite par la norme.
Exemple : on peut coder le caractère 65, ('A') en '1000001' ou '11000010'+'10000001' ou '11100000'+'10000010'+'10000001' ou '11110000'+'10000000'+'10000010'+'10000001'.
Seule la forme '1000001', la plus courte, sera valide.
Les positions allant de U+D800 à U+DFFF et de U+FFFE à U+FFFF sont interdites
┌─────────────────────────────────────────────┬──────────────────────────────────────────┐ │ 0xxxxxxx │ 7 bits 0 : 7F │ │ 110xxxxx 10xxxxxx │ 8 à 11 bits 80 : 7FFF │ │ 1110xxxx 10xxxxxx 10xxxxxx │ 12 à 16 bits 8000 : FFFF │ │ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx │ 17 à 21 bits 10000 : 1FFFFF │ ├─────────────────────────────────────────────┼──────────────────────────────────────────┤ │ A 65 41 01000001 │ 10000001 │ │ PAD 128 80 10000000 (Car.contrôle) │ 11000000 10000000 │ │ é 233 E9 11101001 │ 11000011 10101001 │ │ € 8364 20AC 00100000 10101100 │ 11100010 10000010 10101100 │ └─────────────────────────────────────────────┴──────────────────────────────────────────┘ |
2 : MIGRATION VERS UNICODE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Pour migrer une application d'un ancien codage vers unicode, il faudra d'abord vérifier que les outils utilisés supportent bien Unicode et le stockage UTF-x choisi.
Généralement il faudra migrer séparément les programmes (fichiers messages, ...) et les fichier de données, les SGBD, ...
Pour les programmes sources ou les fichiers messages ou de données en texte plats, il suffira d'utliser des outils du genre iconv.
Pour les fichiers de données ou les SGBD il faudra utiliser les outils spécifiques à ces données.
3 : CLAVIERS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
3.1 : Clavier AZERTY | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Mode Normal
┌─────┐ ┌──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┐ │ Esc │ │ F1 │ F2 │ F3 │ F4 │ │ F5 │ F6 │ F7 │ F8 │ │ F9 │ F10 │ F11 │ F12 │ └─────┘ └──────┴──────┴──────┴──────┘ └──────┴──────┴──────┘──────┘ └──────┴──────┴──────┴──────┘ ┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌────────────┐ │ œ ││ & ││ é ││ " ││ ' ││ ( ││ - ││ è ││ _ ││ ç ││ à ││ ) ││ = ││ <-- │ └─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└────────────┘ ┌───────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌──────────┐ │ -->| ││ a ││ z ││ e ││ r ││ t ││ y ││ u ││ i ││ o ││ p ││ ^ ││ $ ││ │ └───────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─┐ │ ┌─────────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐│ │ │ Caps-Lk ││ q ││ s ││ d ││ f ││ g ││ h ││ j ││ k ││ l ││ m ││ ù ││ * ││ │ └─────────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└────────┘ ┌───────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────────────────┐ │ Shift ││ < ││ w ││ x ││ c ││ v ││ b ││ n ││ , ││ ; ││ : ││ ! ││ Shift │ └───────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────────────────┘ ┌───────┐┌───────┐┌───────┐┌────────────────────────────────────────┐┌───────┐┌───────┐┌───────┐┌───────┐ │ Ctrl ││ Super ││ Alt ││ ││ AltGr ││ Super ││ Imp ││ Ctrl │ └───────┘└───────┘└───────┘└────────────────────────────────────────┘└───────┘└───────┘└───────┘└───────┘ |
Mode Shift
┌─────┐ ┌──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┐ │ Esc │ │ F1 │ F2 │ F3 │ F4 │ │ F5 │ F6 │ F7 │ F8 │ │ F9 │ F10 │ F11 │ F12 │ └─────┘ └──────┴──────┴──────┴──────┘ └──────┴──────┴──────┘──────┘ └──────┴──────┴──────┴──────┘ ┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌────────────┐ │ Œ ││ 1 ││ 2 ││ 3 ││ 4 ││ 5 ││ 6 ││ 7 ││ 8 ││ 9 ││ 0 ││ ° ││ + ││ <-- │ └─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└────────────┘ ┌───────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌──────────┐ │ -->| ││ A ││ Z ││ E ││ R ││ T ││ Y ││ U ││ I ││ O ││ P ││ " ││ £ ││ │ └───────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─┐ │ ┌─────────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐│ │ │ Caps-Lk ││ Q ││ S ││ D ││ F ││ G ││ H ││ J ││ K ││ L ││ M ││ % ││ µ ││ │ └─────────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└────────┘ ┌───────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────────────────┐ │ Shift ││ > ││ W ││ X ││ C ││ V ││ B ││ N ││ ? ││ . ││ / ││ § ││ Shift │ └───────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────────────────┘ ┌───────┐┌───────┐┌───────┐┌────────────────────────────────────────┐┌───────┐┌───────┐┌───────┐┌───────┐ │ Ctrl ││ Super ││ Alt ││ ││ AltGr ││ Super ││ Imp ││ Ctrl │ └───────┘└───────┘└───────┘└────────────────────────────────────────┘└───────┘└───────┘└───────┘└───────┘ |
3.2 : Clavier QWERTY | Début | Précédent | Sommaire | Préc.page.lue | Accueil |
Mode Normal
┌─────┐ ┌──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┐ │ Esc │ │ F1 │ F2 │ F3 │ F4 │ │ F5 │ F6 │ F7 │ F8 │ │ F9 │ F10 │ F11 │ F12 │ └─────┘ └──────┴──────┴──────┴──────┘ └──────┴──────┴──────┘──────┘ └──────┴──────┴──────┴──────┘ ┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌────────────┐ │ ` ││ 1 ││ 2 ││ 3 ││ 4 ││ 5 ││ 6 ││ 7 ││ 8 ││ 9 ││ 0 ││ - ││ = ││ <-- │ └─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└────────────┘ ┌───────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌──────────┐ │ -->| ││ q ││ w ││ e ││ r ││ t ││ y ││ u ││ i ││ o ││ p ││ [ ││ ] ││ │ └───────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─┐ │ ┌─────────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐│ │ │ Caps-Lk ││ a ││ s ││ d ││ f ││ g ││ h ││ j ││ k ││ l ││ ; ││ ' ││ \ ││ │ └─────────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└────────┘ ┌───────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────────────────┐ │ Shift ││ < ││ z ││ x ││ c ││ v ││ b ││ n ││ m ││ , ││ . ││ / ││ Shift │ └───────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────────────────┘ ┌───────┐┌───────┐┌───────┐┌────────────────────────────────────────┐┌───────┐┌───────┐┌───────┐┌───────┐ │ Ctrl ││ Super ││ Alt ││ ││ AltGr ││ Super ││ Imp ││ Ctrl │ └───────┘└───────┘└───────┘└────────────────────────────────────────┘└───────┘└───────┘└───────┘└───────┘ |
Mode Shift
┌─────┐ ┌──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┐ │ Esc │ │ F1 │ F2 │ F3 │ F4 │ │ F5 │ F6 │ F7 │ F8 │ │ F9 │ F10 │ F11 │ F12 │ └─────┘ └──────┴──────┴──────┴──────┘ └──────┴──────┴──────┘──────┘ └──────┴──────┴──────┴──────┘ ┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌────────────┐ │ ~ ││ ! ││ @ ││ # ││ $ ││ % ││ ^ ││ & ││ * ││ ( ││ ) ││ _ ││ + ││ <-- │ └─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└────────────┘ ┌───────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌──────────┐ │ -->| ││ Q ││ W ││ E ││ R ││ T ││ Y ││ U ││ I ││ O ││ P ││ { ││ } ││ │ └───────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─┐ │ ┌─────────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐│ │ │ Caps-Lk ││ A ││ S ││ D ││ F ││ G ││ H ││ J ││ K ││ L ││ : ││ " ││ | ││ │ └─────────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└────────┘ ┌───────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────┐┌─────────────────┐ │ Shift ││ > ││ Z ││ X ││ C ││ V ││ B ││ N ││ M ││ < ││ > ││ ? ││ Shift │ └───────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────┘└─────────────────┘ ┌───────┐┌───────┐┌───────┐┌────────────────────────────────────────┐┌───────┐┌───────┐┌───────┐┌───────┐ │ Ctrl ││ Super ││ Alt ││ ││ AltGr ││ Super ││ Imp ││ Ctrl │ └───────┘└───────┘└───────┘└────────────────────────────────────────┘└───────┘└───────┘└───────┘└───────┘ |
LISTE DES MOTS-CLES | ||
---|---|---|
AZERTY | 3.1 | Clavier AZERTY |
AZERTY | 3 | CLAVIERS |
Claviers | 3 | CLAVIERS |
CODAGES | 1 | CODAGES |
CODAGES | 184 | |
MIGRATION | 2 | MIGRATION VERS UNICODE |
MIGRATION | 1.1.1 | UTF-8 |
overlong | 1.1.1 | UTF-8 |
QWERTY | 3.2 | Clavier QWERTY |
QWERTY | 3.1 | Clavier AZERTY |
Unicode | 1.1 | Unicode |
Unicode | 1 | CODAGES |
Ce document est distribué selon les termes de la licence G.P.L. Documentation. Vous êtes autorisés à le diffuser sur tout support de votre choix, à le publier sur un site internet ou intranet, à la condition que l'auteur original soit mentionné, ce afin d'assurer un meilleur suivi des mises à jour de ce document.
Auteur: Patrick MARION <pmarion19@free.fr>