I. Représenter le texte en machine¶
Cours¶
A. Le code ASCII¶

Le code ASCII (American Standard Code for Information Interchange) a été proposé dans les années 60 pour standardiser la représentation des caractères. Les mots sont stockés sur 1 octet, et seules les 128 premières valeurs sont utilisées.
Combien de bits sont utilisés ?
Pour coder 128 valeurs (de 0 à 127), il faut 7 bits car \(2^7=128\). Il reste donc 1 bit non-utilisé sur cet octet.
Il ne permet que de représenter les caractères principaux de la langue anglaise, ainsi que des caractères non-imprimables (comme le retour à la ligne). Il pose un problème pour représenter certains caractères qui sont utilisées dans les langues européennes mais pas en anglais.
Par exemple quels caractères ne sont pas représentables ?
Les caractères accentués, ou bien le "ç" par exemple posent problème.

-
Quel mot est représenté par la suite de nombres, écrits en décimal, suivante : 72 101 108 108 111 ?
-
Le caractère "9" est-il représenté par le chiffre 9 ?
-
Identifier les différentes catégories de caractères. Sont-ils placés au hasard ?
B. La norme ISO 8859-1¶
Pour pallier ce problème, la norme ISO 8859-1, aussi appelée Latin-1 a vu le jour pour représenter tous les caractères de l'alphabet latin. On reprend le code ASCII (sur 7 bits), et on lui ajoute des caractères spéciaux (sur 1 octet).
Il y en a en fait différentes versions (Latin-2, Latin-3, ... Latin-15), pour les différentes langues européennes. Voici la table correspondant à Latin-1, pour les langues européennes occidentales :

Grâce à cette table, indiquer comment sont représentées les chaînes de caractères "été" et "FÊTE" en machine, en utilisant la notation hexadécimale.
.......................................................................
Mais elle laisse de côté d'autres alphabets, comme le cyrillique, ou bien les idéogrammes utilisés en chinois ou en japonais. Des normes spéciales pour ces langues sont dévelopépes en parallèle.
C. Unicode¶
En 1991 voit le jour la norme qui est utilisée aujourd'hui par plus de 95% des sites web : Unicode. Elle vise à intégrer tous les codages existants, pour représenter tous les caractères utilisés dans le monde.
Elle intègre donc notamment le code ASCII. Les systèmes de codage sont UTF-8 (utilisée sur le Web), UTF-16, UTF-32 (des variations, utilisant plus de bits).
Pour UTF-8, les caractères sont encodés avec un nombre variable d'octets :
- les caractères les plus "classiques" sont codés sur 1 octet (ils correspondent au code ASCII),
- les caractères moins classiques peuvent être codés sur jusqu'à 4 octets.

Dans un logiciel de traitement de texte, voici par exemple ce qui s'affiche lorsque l'on veut représenter des caractères spéciaux :
Synthèse¶
Expliquer en quelques phrases quels sont les différences entre les différents encodages des caractères.
TP : Afficher le texte sur le Web¶
Télécharger le fichier HTML page.hml depuis Pronote;
Voici le code du fichier HTML :
<!doctype html>
<html lang="fr">
<head>
<meta charset="iso-8859-1">
<title>Ca fait rêver !</title>
</head>
<body>
<p> Cet été on fêtera les vacances.</p>
</body>
</html>
-
Double-cliquer sur le fichier : il s'ouvrira avec le navigateur par défaut de votre ordinateur. Que remarquez-vous ?
Pour voir comment chaque caractère est codé en machine, on peut utiliser un éditeur hexadécimal qui va afficher la correspondance entre chaque caractère et sa représentation sous la forme de nombres avec une des normes du cours.
-
Aller sur https://hexed.it/ et charger votre page. Le code la page s'affiche en bleu sur la droite. Passer votre souris sur les deux caractères spéciaux qui s'affichent à la place du "é" et relever leur codage en héxadécimal (qui s'affiche en surligné).
-
Utiliser la table de la norme ISO 8859-1 pour voir à quels caractères correspond ce codage en hexadécimal.
-
Quel codage devrait normalement représenter le caractère "é" ? Le fichier a-t-il vraiment été encodé avec la norme ISO 8859-1 ?
-
Quelle norme utilise un nombre variable d'octets pour représenter les caractères ?
-
Le fichier a bien été encodé dans cette norme. Modifier le code HTML pour résoudre le problème d'affichage.
Remarque
Le navigateur peut automatiquement détecter les problèmes d'encodage.
Avec Firefox :
- afficher le menu en appuyant sur Alt,
- aller dans Affichage > Réparer l'encodage du texte.