Représentation et codage de l'information - représentation des données textuelles - CELENE

La page est créée Pascale Jacob
 
CONTINUER À LIRE
Représentation et codage de l'information - représentation des données textuelles - CELENE
représentation et codage de l’information
4. représentation des données textuelles

L1 informatique — Université d’Orléans
Représentation et codage de l'information - représentation des données textuelles - CELENE
Retour sur le codage des caractères
Codage des caractères

 Le langage écrit repose sur l’utilisation d’alphabets, de
 graphèmes, de symboles.

 Les fichiers contiennent des suites d’octets.

 La convention qui associe un caractère à un code numérique
 est appelée codage de caractères.

 Remarque Une fois cette convention choisie, il reste encore
 pour l’afficher à associer une représentation graphique à une
 suite de caractères, mais c’est une autre histoire (glyphe,
 ligature, etc).

 1
ASCII

 Norme incontournable, codage de caractères sur 7 bits adapté
 à l’alphabet anglais + 33 codes de contrôle.
 Un 0 est rajouté à gauche pour obtenir un octet complet (8 bits).

 Ainsi, le caractère a est codé par l’octet 61 = 0110 0001

 2
ISO 8859
 Norme définissant 16 façons ISO-8859- d’étendre ASCII, avec
 le bit gauche à 1, pour la gestion d’autres langues :
 • ISO-8859-1, latin-1, européen occidental
 • ISO-8859-2, latin-2, européen central
 • ISO-8859-3, latin-3, européen du Sud
 • ISO-8859-4, latin-4, européen du Nord
 • ISO-8859-5, cyrillique
 • ISO-8859-6, arabe
 • ISO-8859-7, grec
 • ISO-8859-8, hébreu
 • ISO-8859-9, latin-5, turc
 • ISO-8859-10, latin-6, nordique
 • ISO-8859-11, thaï
 • ISO-8859-13, latin-7, balte
 • ISO-8859-14, latin-8, celtique
 • ISO-8859-15, latin-9, latin-1 + € 3
 • ISO-8859-16, latin-10, européen du Sud-Est
ISO-8859-15 (latin-1 + codage de €)

 = 0 1 2 3 4 5 6 7 8 9 

 Ainsi, le caractère é est codé par l’octet 9 = 1110 1001

 4
EBCDIC

 Codage exotique utilisé par les mainframe IBM.

 5
Unicode

 Compatible avec Universal Character Set (UCS, ISO/IEC 10646)

 Standard visant à normaliser les échanges de texte au niveau
 mondial. Modélise les caractères et leurs traitements.

 Décrit plus de 110000 caractères couvrant plus de 100 écritures.

 Associe un mot binaire à chaque caractère : les 256 premiers
 sont identiques à ISO-8859-1 (latin-1).

 Initialement codé sur 16 bits, aujourd’hui sur 17 plans de 65536
 caractères, soit 1114112 caractères codables de 0x0 à 0x10FFFF.
 Rappel : 0x10FFFF est le nombre 10FFFF écrit en base 16.

 Notation : U+0000 à U+FFFF pour le premier plan (BMP),
 6
 U+10000 à U+10FFFF pour les autres plans.
Implémentation de l’unicode : UTF-32

 Chaque mot binaire est représenté sur 32 bits, en complétant
 par des 0 à gauche.

 Un texte, même en anglais, occupe quatre fois plus de place !

 Peu utilisé en pratique, éventuellement pour la représentation
 interne de chaînes Unicode.

 7
Implémentation de l’unicode : UTF-8

 UTF-8 est un codage à longueur variable compatible ASCII et
 latin-1, très répandu, en particulier pour le Web et le mail.
 bits dernier code octet 1 octet 2 octet 3 octet 4
 7 U+7F 0xxxxxxx
 11 U+7FF 110xxxxx 10xxxxxx
 16 U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
 21 U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
 Si besoin, on complète par des 0 à gauche pour avoir le nombre de bits demandés.

 Exemple Unicode UTF-8
 @ U+40 1000000 (7 bits) 01000000 0x40
 é U+E9 000 11101001 (11 b) 11000011 10101001 0xC3 0xA9
 € U+20AC 00100000 10101100 11100010 10000010 10101100 0xE2 0x82 0xAC
 Rem : les codages unicode des caractères @ et é sont les mêmes qu’en latin-1 (et
 ASCII pour @). Mais en UTF-8, @ est codé sur 1 octet, é sur 2 octets, € sur 3 octets.
 Les caractères anglais, donc codables en ASCII, sont codés sur 1 octet en UTF-8. 8
Normalisation

 Histoire de compliquer un peu tout ça, Unicode propose
 plusieurs manières de définir un même caractère :

 é est codé U+00E9 ou U+0065 U+0301 (e suivi d’un accent aigü).

 De plus, dans certains contextes, ont peut avoir envie
 d’ interpréter à l’identique certains caractères à la sémantique
 différente :

 U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE : Å

 U+212B ANGSTROM SIGN : Å

 Unicode définit donc des normalisations du texte pour
 permettre la comparaison de chaînes.
 9
En pratique

 En dehors du codage proprement dit, problème du codage des
 fins de lignes : CR vs LF vs CRLF.

 10
Fichier texte brut

 Un fichier texte est une suite de codes de caractères dans un
 encodage fixé (ASCII, latin-1, latin-9, UTF-8, …).
 Ici, le fichier dumbo.txt est codé en UTF-8. cat et hexdump sont des commandes
 exécutées dans un terminal sous Linux ou MacOS. Ne pas tenir compte des numéros
 d’octets 000000, 000010, etc...

 $ cat dumbo.txt
 BlaBlaBlaBla
 Un éléphant qui se balançait sur une toile d'araignée.

 $ hexdump dumbo.txt
 000000 42 6c 61 42 6c 61 42 6c 61 42 6c 61 0a 55 6e 20
 000010 c3 a9 6c c3 a9 70 68 61 6e 74 20 71 75 69 20 73
 000020 65 20 62 61 6c 61 6e c3 a7 61 69 74 20 73 75 72
 000030 20 75 6e 65 20 74 6f 69 6c 65 20 64 27 61 72 61
 000040 69 67 6e c3 a9 65 2e 0a 11
Base64 (Norme RFC 2045, 1996)

 Afficher un texte UTF-8 avec l’alphabet américain.

 On découpe la suite d’octets en mots de 6 bits.
 Ainsi 3 octets = 4 mots de 6 bits.
 chaque mot de 6 bits ⟹ entier compris entre 0 et 63
 chaque entier ⟹ codé par le caractère :
 0=A, 1=B,…, 25=Z, 26=a, …, 51=z, 52=0, …, 61=9, 62= +, 63= /

 Remplissage (padding)
 On complète par des zéros pour avoir un nombre entier de
 mots de 6 bits.
 si on ajoute 2 zéros, on rajoute = à la fin du texte codé
 si on ajoute 4 zéros, on rajoute == à la fin du texte codé

 12
0 A 17 R 34 i 51 z
 1 B 18 S 35 j 52 0
 2 C 19 T 36 k 53 1
 3 D 20 U 37 l 54 2
 4 E 21 V 38 m 55 3
 5 F 22 W 39 n 56 4
 6 G 23 X 40 o 57 5
 7 H 24 Y 41 p 58 6
 8 I 25 Z 42 q 59 7
 9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
 13
Base64 (Norme RFC 2045, 1996)

 Fichier texte en UTF-8.

 $ cat dumbo.txt
 BlaBlaBlaBla
 Un éléphant qui se balançait sur une toile d'araignée.

 $ python -m base64 -e < dumbo.txt
 QmxhQmxhQmxhQmxhClVuIMOpbMOpcGhhbnQgcXVp
 IHNlIGJhbGFuw6dhaXQgc3VyIHVuZSB0b2lsZSBk
 J2FyYWlnbsOpZS4=

 14
Données structurées
Structuration des données

 Données non structurées :
 • le contenu d’un fichier texte
 • un enregistrement audio
 • une collection de photographies

 Données semi-structurées :
 • une page web
 • vos notes de cours
 • un dictionnaire

 Données structurées :
 • les horaires de cinéma
 • le contenu d’un agenda
 • le système de réservation d’une compagnie aérienne 15
Modélisation relationnelle

 Les données sont organisées en tables (ou relations).

 id Interprète Titre Année
 1 Led Zeppelin Stairway to Heaven 1971
 2 AC/DC Highway to Hell 1979
 … … … …

 Colonnes champs, attributs

 Lignes tuples, n-uplets

 16
Le format textuel CSV

 Le format de fichier CSV (comma-separated values) représente
 un tableau par un texte.

 Chaque ligne du fichier correspond à un enregistrement, une
 ligne du tableau.

 Les colonnes sont séparées par un séparateur (virgule ou
 point-virgule).

 id,Interprète,Titre,Année
 1,Led Zeppelin,Stairway to Heaven,1971
 2,AC/DC,Highway to Hell,1979

 17
Données semi-structurées
XML

 Un document XML (eXtensible Markup Language) est une
 chaîne de caractère structurée par des balises.

 • balise ouvrante : 
 • balise fermante : 
 • balise vide : 

 Toute balise ouvrante est fermée par une balise fermante de
 même nom.

 Une balise vide ou bien l’ensemble du texte entre une balise
 ouvrante et la balise fermante correspondante forme un
 élément.
 18
Star Wars
 1977
 
 Carrie Fisher
 
 Maple St.Hollywood
 
 Locust Rd.Malibu
 
 Mark Hamill
 Oak St.
 Bollywood
HTML : code source d’une page web

 Exemple XHTML 1.0
 Texte codé en UTF-8, et décodé en latin-1 !
 
 Tous les éléments doivent être explicitement balisés.
 Les balises fermantes ne sont pas optionnelles.
 Les noms d'éléments et d'attributs
 doivent être en minuscules.
 Tous les attributs doivent avoir une valeur explicite
 .
 Les guillemets sont toujours
 obligatoires autour des valeurs d'attribut.
 Les éléments vides doivent être fermés
 .
Affichage par le navigateur web

 Le fichier HTML est codé en UTF-8.
 Page web affichée avec décodage latin-1 :

 Rem : Chaque é est codé sur 2 octets en UTF-8, ce qui donne 2 caractères en latin-1.

 Page web affichée avec décodage UTF-8 :

 21
Vous pouvez aussi lire