Wallon
licence

Numérique et Sciences Informatiques


TP
TP


Représentation des lettres et du texte

Dans un ordinateur il n'y a que des données binaires, mais les textes et principalement chaque caractère, comment sont ils donc codés dans un ordinateur ?


1)Le code 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)créa la norme ASCII (American Standard Code for Information Interchange). À chaque caractère est associé un nombre binaire sur 8 bits (1 octet). Seuls 7 bits sont utilisés pour coder un caractère, le 8e bit n'est pas utilisé pour le codage des caractères. Avec 7 bits il est possible de coder jusqu'à 128 caractères ce qui est largement suffisant pour un texte écrit en langue anglaise (pas d'accents et autres lettres particulières).



source : https://fr.wikipedia.org/wiki/Fichier:ASCII-Table-wide.svg



Comme vous pouvez le constater dans le tableau ci-dessus, au "A" majuscule correspond le code binaire (1000001)2 ((65)10 ou (41)16)

application :

Quel est le code binaire du "a" minuscule en ASCII?

Ecrivez votre prénom en Hexadécimal en ASCII

Comme vous pouvez le voir dans cette table, certains codes ne correspondent pas à des caractères (de 0 à (32)10), ces codes seront vus à un autre moment.

2) La norme ISO-8859-1 :

La norme ASCII est idéale pour la langue anglaise, mais rencontre quelques soucis avec le français, notamment. En effet l'ASCII ne prévoit pas d'encoder les lettres accentuées. C'est pour cela qu'on a créé la norme ISO-8859-1. Cette norme reprend les mêmes principes que l'ASCII, mais les nombres binaires associés à chaque caractère sont codés sur 8 bits, ce qui permet d'encoder jusqu'à 256 caractères. On utilisera surtout cette norme dans les pays européens puisqu'elle permet d'encoder les caractères utilisés dans les principales langues européennes (la norme ISO-8859-1 est aussi appelée "latin1" car elle permet d'encoder les caractères de l'alphabet dit "latin")

Remarque : il existe beaucoup d'autres langues dans le monde qui n'utilisent pas l'alphabet dit "latin", par exemple le chinois ou le japonais ! D'autres normes ont donc dû voir le jour, par exemple la norme "GB2312" pour le chinois simplifié ou encore la norme "JIS_X_0208" pour le japonais.

Cette multiplication des normes a très rapidement posé problème. Imaginons un français qui parle le japonais. Son traitement de texte est configuré pour reconnaitre les caractères de l'alphabet "latin" (norme ISO-8859-1). Un ami japonais lui envoie un fichier texte écrit en japonais. Le français devra modifier la configuration de son logiciel afin que ce dernier puisse afficher correctement l'alphabet japonais. S'il n'effectue pas ce changement de configuration, il verra s'afficher des caractères plutot bizaroides.

3)L'Unicode :

Pour éviter ce genre de problème, en 1991 une nouvelle norme est apparue : l'Unicode

L'Unicode a pour ambition de rassembler tous les caractères existant afin qu'une personne utilisant l'Unicode puisse, sans changer la configuration de son traitement de texte, à la fois lire des textes en français ou en japonais

L'Unicode est une table qui regroupe tous les caractères existant au monde, il ne s'occupe pas de la façon dont ces caractères sont codés dans la machine. L'Unicode accepte plusieurs systèmes de codage : l'UTF-8, l'UTF-16, l'UTF-32. Le plus utilisé, notamment sur le Web, est actuellement l'UTF-8.

Pour encoder les caractères en Unicode, l'UTF-8 utilise un nombre variable d'octets : les caractères "classiques" (les plus couramment utilisés) sont codés sur un octet, alors que des caractères "moins classiques" sont codés sur un nombre d'octets plus important (jusqu'à 4 octets). Un des avantages de l'UTF-8 c'est qu'il est totalement compatible avec la norme ASCII : Les caractères Unicode codés avec UTF-8 ont exactement le même code que les mêmes caractères en ASCII.

application :

Quel est le code binaire du "b" minuscule en Unicode codé avec l'UTF-8 ?

Ecrivez votre nom en Unicode

4)Exercices :

a ) Trouver la taille d'un fichier :
on sait qu'un caractère est codé en ASCII sur un octet.
Un KiloOctet vaut 1024 octets, mais on admets que ça équivaut à 1000 octets pour simplifier.
Si un fichier texte contient 90000 caractères, quelle sera en KiloOctet, la taille de ce fichier ?

b ) Ecrire une phrase dans Notepad++ et regarder la taille du fichier obtenu après enregistrement.
Justifier cette taille.
c ) Ecrire cette même phrase dans un logiciel de traitement de texte et donner la taille du fichier.
expliquer la différence.

d ) En utilisant la table ASCII, donner le code binaire de la phrase : Bonjour mon cher ami.

e ) Quel texte est obtenu à partir du code ASCII suivant :

01010110 01101001 01110110 01100101 00100000 01101100 01100001 00100000 01001110 01010011 01001001 00100000 00100001

f ) On considère le symbole € dont le code ISO est 8364(10)
* convertir cette valeur en binaire
* quel est le code de ce caractère en UTF-8 ?
* combien d'octets seront necessaires pour coder ce caractère en UTF-8


(source : wikipedia)

Description

UTF = UCS Transformation Format
(UCS = Universal Character Set, norme ISO-10646)

Le numéro de chaque caractère est donné par le standard Unicode.

Les caractères de numéro 0 à 127 sont codés sur un octet dont le bit de poids fort est toujours nul.

Les caractères de numéro supérieur à 127 sont codés sur plusieurs octets. Dans ce cas, les bits de poids fort du premier octet forment une suite de 1 de longueur égale au nombre d'octets utilisés pour coder le caractère, les octets suivants ayant 10 comme bits de poids fort.

Définition du nombre d'octets utilisés
Représentation binaire UTF-8 Signification
0xxxxxxx 1 octet codant 1 à 7 bits
110xxxxx 10xxxxxx 2 octets codant 8 à 11 bits
1110xxxx 10xxxxxx 10xxxxxx 3 octets codant 12 à 16 bits
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 4 octets codant 17 à 21 bits






TP
TP