Manipulation de codage de caractères avec Python

Python 3 contient deux fonctions natives qui permettent de travailler sur le codage des caractères

Passer du caractère à son code

C'est la fonction ord qui est responsable de donner le code d'un cractère. Voici ce que dit la documentation Python

ord(c)

Renvoie le nombre entier représentant le code Unicode du caractère représenté par la chaîne donnée. Par exemple, ord('a') renvoie le nombre entier 97 et ord('€') (symbole euro) renvoie 8364. Il s'agit de l'inverse de chr().


Voilà un petit programme qui vous permet de tester la fonction ord pour voir comment elle fonctionne :

#!/usr/bin/python3

texte = input("Entrez le texte à à code")

print (f"{texte} se code de la façon suivante :")
for caractere in texte :
    print(ord(caractere),end=" ")

print()

Essayez ce code, et remarquez que les caractères accentués sont bien toujours au dessus de 128.

Passage du code au caractère

À l'inverse, c'est la fonction chr qui permet de passer du code au caractère.Voici ce que dit la documentation Python

chr (i)

Renvoie la chaîne représentant un caractère dont le code de caractère Unicode est le nombre entier i. Par exemple, chr(97) renvoie la chaîne de caractères 'a', tandis que chr(8364) renvoie '€'. Il s'agit de l'inverse de ord().

L'intervalle valide pour cet argument est de 0 à 1114111 (0x10FFFF en base 16). Une exception ValueError est levée si i est en dehors de l'intervalle.


Voici un programme simple dont le code permet de rentrer un nombre et de voir le code correspondant :

#!/usr/bin/python3

number = int(input("De quel nombre voulez vous connaître le caractère utf-8 correspondant ?"))
print(f"Le caractère utf-8 correspondant est {chr(number)}")

Essayez ce code, en particulier en entrant 8364 qui est la valeur pour l'euro