Représentation et codage de l'information - représentation des données textuelles - CELENE
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
représentation et codage de l’information 4. représentation des données textuelles L1 informatique — Université d’Orléans
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