Représentation d'un texte en machine
Numérique et sciences informatiques
1963
Naissance du code ASCII pour permettre les echanges d'informations.
1986
Apparition de La norme ISO 8859-1 qui permet de coder la très grande majorité des caractères de nombreuses langues.
1988
Le standard Unicode permet de coder tous les systèmes d'écriture du monde.
1996
La norme UTF-8 est adopté. Elle permet de limiter le coût en mémoire avec un encodage de taille variable
Un ordinateur est uniquement capable de traiter des données binaires.
I. ASCII
Avant 1960 de nombreux systèmes de codage de caractères existaient, ils étaient souvent incompatibles entre eux. En 1960, l'organisation internationale de normalisation (ISO) décide de mettre un peu d'ordre dans ce bazar en créant la norme ASCII (American Standard Code for Information Interchange).
Cette norme ne définissait que 27 = 128 codes (une longueur 7 bits, codes de 0000 0000 à 0111 1111).
La norme ASCII convient bien à la langue anglaise, mais pose des problèmes dans d'autres langues, par exemple le français. En effet l'ASCII ne prévoit pas d'encoder les lettres accentuées.
33 caractères correspondent à des caractères de contrôle et 95 caractères sont imprimables :
- les chiffres de 0 à 9,
- les lettres minuscules de a à z et les majuscules de A à Z,
- des symboles mathématiques et de ponctuation.
La représentation binaire du caractère A majuscule est (1000001)2 ou (65)10et sa représentation hexadécimale est (41)16 .
Base 16 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Base 2 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | |
0x0 | 0000 | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
0x1 | 0001 | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
0x2 | 0010 | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
0x3 | 0011 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
0x4 | 0100 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
0x5 | 0101 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | } | ^ | _ |
0x6 | 0110 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
0x7 | 0111 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
La représentation binaire du caractère Z est (0101 1010)2 et sa représentation hexadécimale est (5A)16 ; lecture de la ligne puis de la colonne.
Entraînement 1 :
- Quel est le code binaire du "a" minuscule en ASCII?
- Coder vote prénom (en commençant avec une majuscule) à l’aide du code ASCII.
- Trouvez le texte représenté en ASCII binaire par la suite de bits :
010011100010111001010011001011100100100100101110
Voir une solution
Entraînement 2 : Message secret
Parviendrez-vous à décoder le message secret ci-dessus ?
0x420x720x610x760x6f0x200x210x200x560x6f0x750x73
0x200x610x760x650x7a0x200x640xe90x630x6f0x640xe90x200x6c
0x650x200x6d0x650x730x730x610x670x65
II. ISO-8859-1
La norme ISO-8859-1, également connue sous le nom de Latin-1, est une norme de codage de caractères qui définit un ensemble de 256 caractères utilisables dans les ordinateurs. Cette norme est principalement utilisée pour représenter les caractères alphabétiques européens, tels que les lettres avec accents, les caractères de ponctuation et les symboles mathématiques.
La norme ISO-8859-1 est souvent utilisée dans les applications informatiques, les pages web et les documents électroniques en Europe et en Amérique du Nord. Elle est également souvent utilisée comme codage de caractères par défaut pour les systèmes d'exploitation et les logiciels.
Les caractères de la norme ISO-8859-1 sont codés sur un octet, c'est-à-dire qu'ils sont représentés par 8 bits. Chaque caractère a un code unique qui est compris entre 0 et 255. Les premiers 128 caractères sont identiques aux caractères ASCII, ce qui signifie qu'ils sont compatibles avec le codage ASCII.
La norme ISO-8859-1 est donc une norme importante dans le monde de l'informatique et est utilisée pour représenter de nombreux caractères dans différents langages.
III. Unicode
L'Unicode est un standard informatique qui permet de représenter de manière unique tous les caractères utilisés dans les différentes écritures du monde entier, qu'il s'agisse de caractères latins, cyrilliques, arabes, chinois, etc.
Le but de l'Unicode est de fournir une méthode universelle pour encoder et représenter tous les caractères, afin de faciliter la communication entre les systèmes informatiques, les applications et les personnes utilisant différentes langues.
Comment fonctionne l'Unicode ?
Dans l'Unicode, chaque caractère est représenté par un point de code unique appelé "code point". Le code point est un nombre entier qui identifie de manière unique un caractère dans l'ensemble de caractères Unicode.
Il existe actuellement plus de 143 000 code points dans l'ensemble de caractères Unicode, chacun représentant un caractère spécifique. Les premiers 128 code points sont réservés aux caractères ASCII, tandis que les autres sont utilisés pour représenter des caractères de langues et de scripts du monde entier.
Encodage des caractères Unicode
Les caractères Unicode peuvent être encodés de différentes manières dans un fichier ou dans la mémoire d'un ordinateur. Les deux encodages les plus courants sont UTF-8 et UTF-16.
- UTF-8 : cet encodage utilise de 1 à 4 octets pour représenter chaque caractère Unicode. Les caractères ASCII sont encodés sur 1 octet, tandis que les caractères non ASCII nécessitent plus d'octets pour être représentés.
- UTF-16 : cet encodage utilise de 2 à 4 octets pour représenter chaque caractère Unicode. Les caractères ASCII sont encodés sur 2 octets, tandis que les caractères non ASCII nécessitent plus d'octets pour être représentés.
Il est important de choisir le bon encodage pour un fichier ou une application afin de garantir que tous les caractères sont représentés correctement.
Utilisation de l'Unicode en programmation
L'Unicode est utilisé dans de nombreuses langues de programmation pour représenter les chaînes de caractères. Dans la plupart des langues de programmation, les chaînes de caractères sont représentées sous forme de tableaux de code points Unicode.
Il est important de comprendre comment les chaînes de caractères sont représentées et manipulées en utilisant l'Unicode pour éviter les erreurs et garantir que les textes sont affichés correctement dans les applications.
Conclusion
En conclusion, l'Unicode est un standard informatique important qui permet de représenter de manière unique tous les caractères utilisés dans les différentes écritures du monde entier. Il est utilisé dans de nombreuses technologies de l'information, y compris les systèmes d'exploitation, les applications, les sites web, les réseaux sociaux et les plates-formes de messagerie.
Pour un élève de première NSI, comprendre l'Unicode est important pour travailler avec des textes multilingues, éviter les problèmes d'encodage et de manipulation de chaînes de caractères, et développer des applications et des sites web efficaces et fonctionnels.
Entraînement 3 :
Quel est le code binaire du "b" minuscule Unicode codé avec UTF-8 ?
Python permet d’afficher un caractère à partir de son code avec la commande chr(valeur du caractère). Il permet aussi de donner le code d’un caractère avec la commande ord("a") par exemple. Le programme suivant permet donc d’afficher la table ASCII
for i in range(128) :
print(i,chr(i))
Entraînement 4 :
- Écrire une fonction qui renvoie un booléen pour indiquer que le mot est en minuscule. Idem avec majuscule
- Écrire une fonction qui convertit un texte en majuscule et une pour convertir en minuscule
Savoir faire
- Identifier l'intérêt des différents systèmes d'encodage d'un texte en machine : les encodages ASCII, ISO 8859-1 et Unicode.
- Convertir un fichier texte dans différents formats d'encodage.
Fiche de cours