C8.2 : Python et l'encodage des caractères

Généralités

L'encodage des fichiers texte en python

Python utilise l'UTF-8 comme encodage.

Prendre connaissance : quelques éléments du Python

• Il est possible d'utiliser les points de code Unicode en Python en utilisant le caractère d'échappement \u.

chaine = '\u00D7'

• La fonction ord() renvoie le code Unicode d'un caractère en base dix.

val_unicode = ord('×')

• La fonction chr() renvoie le caractère correspondant à la valeur passée en paramètre (cette valeur peut être en base 10, en binaire, en hexadécimal...).

caract = chr(0xD7)
caract = chr(65)

Applications

Application 1 : Code ISO-8859-1 d'une chaine de caractères

1) Écrire une fonction :

2) Écrire le programme principal qui permet à l'utilisateur de saisir un caractère afin de connaitre son code ISO-8859-1.

Vérifier l'exactitude du résultat à l'aide de l'éditeur hexadécimal.

Afficher la correction

Remarque : Le code iso des caractères ISO-8859-1 sont identiques à leur point de code unicode

# Définition de la fonction
def carac_to_iso8859(c):
    return hex(ord(caractere))

# Programme principal
caractere = input('Entrer un caractère : ')
print('Le code ISO-8859-1 du caracètre ' + caractere + ' est ' + carac_to_iso8859(caractere))

Application 2 : ASCII ou pas ASCII

Écrire une fonction qui :

Afficher la correction
def est_ascii(caractere):
if ord(caractere) < 128:
    return True
else:
    return False

Application 3 : Mise en majuscule

Dans cette application, on n'utilisera pas les caractères accentués.

Étape 1 : Écrire une fonction qui prend une lettre en minuscule et la renvoie en majuscule, sans utiliser la méthode upper().

Étape 2 : Adapter la fonction pour que la lettre passée en paramètre puisse être indifféremment une lettre en minuscule ou en majuscule, toujours sans utiliser la méthode upper().

Afficher la correction

1)

def min_to_maj(lettre_min):
    lettre_maj = chr(ord(lettre_min) - 32)
    return lettre_maj

2)

def min_to_maj(lettre_min):
    if ord(lettre) >= 97:
        lettre_maj = chr(ord(lettre) - 32)
    else:
        lettre_maj = lettre
    return lettre_maj