Représentation des caractères 1 Problématique Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte? Puisqu un texte est une suite de caractères, nous allons nous intéresser ici à la représentation des caractères, c est-à-dire le codage des lettres minuscules et majuscules, des chiffres, des signes de ponctuation et des symboles. 2 Le code ASCII 2.1 Présentation Le premier code que nous allons étudier ici est le code ASCII (American Standard Code for Information Interchange) dont les premières versions datent du début des années 1960. Le principe est assez simple : Chaque caractère est identifié par un code unique qui est un entier naturel; la correspondance entre le caractère et son code est appelée un Charset. Le code n étant pas utilisable tel quel par un ordinateur qui ne comprend que le binaire, il faut donc représenter les codes par des octets : c est l Encoding. Le code ASCII représente 95 caractères : les 26 lettres minuscules, les 26 lettres majuscules, les 10 chiffres, les 32 symboles! " # $ % & ( ) * +,. / :; < = >? @ [ \ ] ^ _ { } ~ et 1 signe d espace. Il représente aussi 33 autres symboles de mise en page, par exemple le retour chariot qui signale la fin de la ligne et le saut de page qui signale le passage à la page suivante. Le code ASCII représente donc 95+33 = 128 caractères Combien de bits sont donc nécessaires pour coder l ensemble de ces caractères?... car... En réalité, un 8ème bit était auparavant réservé pour des contrôles de sécurité (pour éviter les erreurs, qui étaient très fréquentes dans les premières mémoires électroniques), ce qui fait que chaque caractère était (et est resté dans cette représentation) codé par un octet. Voici une première représentation de la table ASCII : Page 1/6
Comment comprendre cette table? Le caractère A est codé en ASCII par le nombre 65 (dans notre système décimal habituel), qui correspond en binaire au nombre 01000001. Que veut dire la colonne nommée «Hex»?...... Comment comprendre la valeur 41 correspondant au caractère A?......... On peut représenter une forme plus condensée de cette table de la façon suivante, en ne donnant que l Encoding (ici en hexadécimal) On retrouve par exemple que le caractère A est codé en hexadécimal par 41. 2.2 Activité - Taille d un texte 1. Donner la taille (en octets) de la phrase : «Enfin, je viens de comprendre!» (Attention, il faut compter les espaces, et signes de ponctuation...)... 2. Ecrire cette phrase l éditeur Kate et enregistrer le fichier. Vérifier la taille en octets du fichier obtenu (clic droit sur l icône du fichier - puis propriétés). 3. Ecrire maintenant la même chose dans le logiciel de traitement de texte LibreOffice Writer Quelle est la taille du fichier obtenu?... Quelles peuvent en être les explications? 2.3 Activité - Utilisation de la table ASCII 1. A l aide de la table ASCII, coder en binaire le mot : «test»...... 2. Voici maintenant une exclamation codée en binaire : 01000010 01110010 01100001 01110110 01101111 00100000 00100001 Retrouver cette exclamation!... 3. Connecter-vous sur le site suivant : http://nickciske.com/tools/binary.php et utiliser l outil en ligne pour vérifier vos réponses précédentes. 4. Peut-on coder en binaire la phrase «Un âne est-il passé par là?» à l aide de la table ASCII? (Justifier la réponse)...... Page 2/6
3 Premières extensions de la table ASCII En fait, le code ASCII était à l origine conçu pour des textes écrits en anglais. Il n est pas adapté pour représenter des textes écrits dans d autres langues, même celles qui, comme le français, utilisent l alphabet latin, car ces langues utilisent par exemple des accents, des cédilles... Il a donc fallu étendre la table ASCII pour pouvoir coder les nouveaux caractères. Les mémoires devenant plus fiables et, de nouvelles méthodes de contrôle plus sûres, le 8ème bit a pu être utilisé pour coder plus de caractères. Combien le fait d avoir 8 bits amène-t-il de nouvelles possibilités?... On a donc d abord conçu une extension du code ASCII : la norme ISO 8859 1 (appelé également latin-1), dans les années 1980. Ce code contient 191 caractères : aux 128 caractères du code ASCII, qui sont représentés comme en ASCII, s ajoutent les lettres «é», «É», «è», «ç», «æ», «ñ», «ö», etc. qui permettent de représenter les textes écrits dans la plupart des langues d Europe de l Ouest, même si, pour le français, le «œ» a été oublié. Dans les pays occidentaux, cette norme a donné lieu à quelques extensions et adaptations, dont Windows-1252 (appelé ANSI) et ISO 8859-15. Ces extensions prennent notamment en compte la ligature «œ» mais également le symbolebc qui a été créé après la norme ISO 8859-1. Remarque importante : La distinction entre ASCII, ISO 8859-1, ISO 8859-15 et Windows-1252 est une source de confusion parmi les développeurs de programmes informatiques car un même caractère peut être codé différemment suivant la norme utilisée. Voici ci-dessous deux tableaux présentant côte à côte deux extensions de la table originale ASCII : À première vue, on a les mêmes caractères aux mêmes places ; un regard plus attentif montre l affectation de caractères supplémentaires sur des zones inutilisées dans ISO 8859-15. Un examen encore plus attentif montre enfin que les deux tables sont incompatibles : Certains caractères étant codés différemment. Par exemple, le caractère...a pour code...dans l extension Windows-1252 et...dans la norme ISO 8859-15. Page 3/6
4 Standardisation : l unicode 4.1 Problématique Vous avez peut-être reçu un jour un courriel bizarre ou lu une page web telle que celle-ci : Bien que ceci soit de moins en moins fréquent (nous comprendrons bientôt pourquoi), on trouve parfois des phrases dans lesquelles certains caractères sont remplacés par d autres qui n ont rien à voir et qui empêchent la lecture et la compréhension du texte. Il s agit ici d un problème d encodage et de décodage : Plusieurs codages existent et sans uniformisation des codages utilisées, la personne qui écrit le texte peut très bien utiliser une norme différente de celle utilisée par celui qui le lit! Du fait notamment de la globalisation des échanges culturels et économiques et de la généralisation de l utilisation d Internet, il a paru nécessaire de chercher à uniformiser le codage des caractères. 4.2 Présentation de l unicode La norme Unicode a donc été créée pour permettre le codage de textes écrits quel que soit le système d écriture utilisé. Un consortium composé d informaticiens, de chercheurs, de linguistes et de personnalités représentant les États ainsi que les entreprises s occupe donc d unifier toutes les pratiques en un seul et même système : l Unicode. L Unicode est une table de correspondance Caractère-Code (Charset), et l UTF-8 est l encodage correspondant (Encoding) le plus répandu (par défaut, les navigateurs Internet utilisent le codage UTF-8), il permet de coder tout caractère indépendamment de tout système de programmation ou système d exploitation. Ce code est utilisé dans les pages web, les emails, etc... Le codage UTF-8 est compatible avec la norme ASCII : tout caractère ASCII se code en UTF-8 sous forme d un unique octet, identique au code ASCII. Le codage UTF-8 a vocation à devenir le standard, mais il ne l est pas encore, malgré les efforts des comités de normalisation! Par défaut, les navigateurs Internet utilisent le codage UTF-8 et les concepteurs de sites pensent de plus en plus à créer leurs pages web en prenant en compte cette même norme; c est pourquoi il y a de moins en moins de problèmes de compatibilité. 4.3 Codage et internet 1. Aller sur la page internet du Lycée Paul Gauguin : www.des.pf/itereva/lpg/ Afficher le code source de la page (dans l onglet Affichage puis code source ou avec Firebug) Quel est l encodage défini dans l entête du fichier html?...... Aller dans l onglet Affichage puis Encodage des caractères. Remarquer l encodage utilisé ici par le navigateur.... Modifier alors l encodage dans ce sous-onglet et observer le rendu à l écran 2. Aller sur la page suivante : https://fr.wikipedia.org/wiki/unicode et reprendre le schéma de la question précédente. Quel est l encodage défini dans l entête du fichier html?...... Quel est l encodage utilisé par le navigateur?...... Remarque : Le navigateur utilise l encodage défini dans les méta-données du fichier html. Sans précision dans le html, les navigateurs que l on utilise se basent par défaut sur l UTF-8. Page 4/6
4.4 Quelques notions sur l UTF-8 L encodage UTF-8 utilise 1, 2, 3 ou 4 octets en respectant certaines règles : Un texte en ASCII de base (appelé aussi US-ASCII) est codé de manière identique en UTF-8. On utilise un octet commençant par un bit 0 à gauche (bit de poids fort). Caractère Code Correspondance en binaire Représentation en UTF-8 A 65 1000001 01000001 Les octets ne sont pas remplis entièrement. Les bits de poids fort du premier octet forment une suite de 1 indiquant le nombre d octets utilisés pour coder le caractère. Les octets suivants commencent tous par le bloc binaire 10. Exemple : Dans la norme ISO 8859-1 le «é» est codé 1110 1001. En UTF-8 on le code sur deux octets en respectant les précisions apportées dans le tableau ci-dessus. Les bits imposés sont en gras, le code du «é» est écrit en commençant par la droite et l octet de gauche est rempli par des zéros (en italique). Voilà ce que l on obtient : 11000011 10101001. On pourra remarquer que le codage ISO s inscrit bien dans le codage UTF-8. 4.5 Activités En utilisant les informations précédentes, 1. En quoi le codage binaire du «é» peut-il être décodé si l on se trompe de table et qu on utilise par exemple le codage ISO-8859-15 ou Windows.1252?......... 2. En reprenant l exemple du «é», a) Déterminer le codage du «à» en UTF-8 b) En quoi le codage binaire du «à» peut-il être décodé si l on se trompe de table et qu on utilise par exemple le codage ISO-8859-15 ou Windows.1252? 3. Vérifier vos réponses à l aide du texte mal décodé du 4.1 5 Références Pour plus d informations : Sur l ASCII et l ASCII étendu : https://fr.wikipedia.org/wiki/american_standard_code_for_information_interchange https://fr.wikipedia.org/wiki/ascii_étendu Page 5/6
sur l Unicode : http://www.unicode.org http://fr.wikipedia.org/wiki/unicode http://fr.wikipedia.org/wiki/utf-8 6 Sources Ce document a été créé à partir des sources modifiées suivantes : Ministère de l éducation nationale (DGESCO IGEN) - Document ressource - ISN Terminale série scientifique - Le codage numérique du texte G. Dowek and al. Informatique et Science du Numérique Edition Eyrolles Page 6/6