Introduction

Historique

Cartes perforées

1725 : orgue de Barbarie (figure )

orgue de Barbarie

1801 : métier à tisser Jacquard (figure )

métier à tisser Jacquard

1908 : Charles Babbage, ordinateurs (figure )

Carte perforée

Imprimantes / Écrans / claviers

Ordinateur “personnel” : 1960

1964 : IBM 2260 (figure )

IBM 2260

Codage des caractères

Exemple : lettre “A” => numéro 65

ASCII et successeurs

ASCII

American Standard Code for Information Interchange

Bit de parité

Exemple :

ASCII : 7 bits

Table ASCII

127 caractères de la table ASCII : figure

Table ASCII

Affichage en python

Fonction chr : caractère correspondant à un code

# Basique
for c in range(128):
    print(chr(c))

# Plus joli
for c in range(32,128):
    print(f"{c:03d}={chr(c)}", end=" ")
    if c % 8 == 7:
        print()

ISO-8859

ISO-8859

Principe

Table ISO-8859-1

256 caractères de la table ISO-8859-1 : figure

Table ISO-8859-1

Défauts

Texte en 8859-1
Texte en 8859-1 ouvert en 8859-7
Texte en 8859-1 ouvert en UTF-8

Unicode

Norme Unicode

Naissance et principe

Exemples :

Versions

Versions successives pour ajouter des caractères : https://unicode.org/versions/ ou wikipedia

UTF-8

Principe

UTF-8

UTF-8 = Unicode Transformation Format 8 bits

UTF-8 : 1 octet

0bbb bbbb

UTF-8 : plusieurs octets

Bits de poids fort du 1er octet : indiquent le nombre d’octets utilisés pour encoder le caractère. Les bits restants indiquent la valeur unicode.

Exemple

Exercice

https://fonts.google.com/specimen/Source+Code+Pro/glyphs

Écrire le code UTF-8 correspondant.

Adoption

UTF-8 est le codage le plus utilisé dans le monde.

Python 3 : UTF-8 par défaut

Inconvénients

On ne peut pas se déplacer dans une chaîne de caractères en UTF-8 en comptant les octets, il faut partir du début à chaque fois => algorithmes spécifiques.

Python et les chaînes de caractères

Python 3

UTF-8 par défaut

Particularités

Fonctions de chaînes de caractères