Académique Documents
Professionnel Documents
Culture Documents
microcontrôleurs
Codage du texte
L'Homme utilise, en plus des nombres, le
texte comme information
Comment stocker du texte dans une
machine ?
On affectera à chaque caractère un code
binaire
Un caractère : lettre, chiffre ou symbole
Code ASCII
ASCII : American Standard Code for
Information Interchange
Prononcé : Aski
Créé par les américains pour coder les
caractères
Sa première version faisait correspondre à
chaque caractère un code sur 7 bits.
128 caractères possibles
Exemple : "A" 100 0001 (0x41)
Code ASCII
Table du code ASCII sur 7 bits
Caractères
de contrôle
CR : Carriage Return
(Retour Chariot)
Code ASCII
Limitation : Le code ASCII sur 7 bits ne
représente pas les caractères européens
accentués (é,è,ê, …)
Solution : Extension à 8 bits
256 codes possibles
Norme ISO 8859
Code ASCII
Code ASCII 8 bits Latin-1(ISO 8859-1)
Code ASCII
Limitation : Le code ASCII 8 bits ne prend
pas en charge les autres langues du
monde : l'arabe, le chinois, le grec, …
Solution : Créer plusieurs variantes du
code ASCII (jeux de caractères)
L'arabe : Code ASCII ISO 8859-6
Le grec : Code ASCII ISO 8859-7
…
Code ASCII
Code ASCII ISO 8859-6
Code ASCII
Conséquence : Il faut absolument indiquer
le jeu de caractère utilisé pour afficher
correctement un texte
Exemple
Soit le texte arabe : نــعــم
Codage en ASCII (ISO 8859-6) : E4 DA E3
Si on se trompe et on affiche cette séquence en
codage ASCII Latin-1 (ISO 8859-1), le texte
affiché sera : äÚã
Code ASCII
Question : Et si on désire afficher un texte
en français (caractères accentués) avec des
citations en arabe, quel jeu de caractères
utiliser ?
Réponse : Nous devons utiliser un autre
codage des caractères : l'Unicode
Code ASCII
Représentation d'une chaîne de caractères
en mémoire (convention langage C)
1500 53 S
1501 61 a
1502 6C l
1503 75 u
1504 74 t
Indicateur de fin
1505 00 Caractère NUL
L'Unicode
Objectif :
Créer une table universelle qui comprend
les caractères de tous les alphabets du
monde. Chaque caractère a un code
unique.
Créé en 1991 par le Consortium Unicode
Il est compatible avec la norme
ISO/CEI 10646
L'Unicode
Au départ, les codes étaient représentés sur
16 bits. C'est suffisant pour coder tous les
caractères des langues du monde et les
symboles d'usage courant.
Aujourd'hui, on est arrivé à 21 bits pour
coder toutes les langues de l'histoire de
l'humanité
L'Unicode
Partitionnement de la table Unicode (extrait)
L'Unicode
Alphabet arabe (0600 - 06FF)
L'Unicode
Formes de représentation de l'Unicode
Au départ, chaque caractère en Unicode était
représenté sous forme de 2 octets (16 bits)
Problèmes
En prenant un octet au hasard dans un texte, on ne
sait pas s'il représente la première ou la deuxième
partie du code. Il faut alors faire le compte des
octets depuis le début du texte !!
Espace de stockage et trafic réseau doublé
inutilement pour le texte anglais qui représente le
grand pourcentage des données
L'Unicode
Formes de représentation de l'Unicode
Solution : transformer la représentation de
l'Unicode UTF (Universal Transformation
Format)
Il existe trois types de transformation : UTF-8,
UTF-16 et UTF-32.
La plus connue sur Internet est l'UTF-8 car elle
prend le moins d'espace et elle est compatible
avec le code ASCII
L'Unicode
L'UTF-8
Sa longueur est variable entre 1 à 4 octet
Représentation UTF-8 Octets Bits codés de l'Unicode
0bbbbbbb 1 1 à 7 bits
110bbbbb 10bbbbbb 2 8 à 11 bits
1110bbbb 10bbbbbb 10bbbbbb 3 12 à 16 bits
11110bbb 10bbbbbb 10bbbbbb 10bbbbbb 4 17 à 21 bits
Exemples
Car. Unicode Code en binaire Bits Représentation UTF-8
A 0041 100 0001 7 01000001
é 00E9 1110 1001 8 11000011 10101001
€ 20AC 10 0000 1010 1100 14 11100010 10000010 10101100
L'Unicode
L'UTF-8
Transformation inverse
On regarde les bits de poids fort de l'octet pris
L'Unicode
L'UTF-8
Transformation inverse : Exemple
Trouver le texte correspondant à cette séquence :
44 C3 A9 6A C3 A0
01000100 11000011 10101001 01101010 11000011 10100000
01000100 11000011 10101001 01101010 11000011 10100000
D é j à
L'Unicode
L'UTF-8
Avantages
Compatibilité avec l'ASCII américain
Efficacité : occupe moins d'espace pour les caractères
latins
Codage auto-synchronisant : on peut identifier les
octets au milieu du texte
Inconvénients
Longueur variable Traitement compliqué
Outils
Editeur hexadécimal
Permet d'afficher et modifier le contenu d'un
fichier en binaire
Exemple : HexWorkshop
Navigateur internet
Tag: <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
Remarque : on peut afficher un caractère en
unicode sur une page HTML en utilisant la
notation : &#code_en_décimal;
Exemple : 0x0643 ك ك