nsi:premiere:exercices:fonctions_encode_decode
Exercice : Fonctions encode et decode
Que produisent les commandes suivantes – en console Python :
>>>"école".encode('ascii')
>>> "école".encode('iso-8859-1')
>>> "école".encode('utf-8')
Comprendre le résultat :
- Le
ben tête de la réponse, signifie que ce n'est plus un texte mais une suite d'octets (byte). - Quand ces octets correspondent à de l'ASCII, on donne le caractère correspondant.
- Sinon, on écrit l'octet en hexadécimal. En ISO, le
éétait codé par l'octetE9. En UTF-8, ce mêmeéétait codé par les deux octetsC3 A9.
On va tenter les opérations inverses :
>>> b'\xc3\xa9cole'.decode('utf-8')
>>> b'\xe9cole'.decode('iso-8859-1')
Sans surprise, le décodage se passe normalement.
Essayons maintenant de décoder de travers :
>>> b'\xc3\xa9cole'.decode('iso-8859-1')
>>> b'\xe9cole'.decode('utf-8')
Comprendre le résultat :
- Dans le premier cas, pour ISO, chaque octet est un caractère.
C3 A9sont compris comme© - Dans le deuxième cas, UTF-8 rencontre
E9suivi de'c', ce qui ne devrait pas arriver, d'où l'erreur.
Vous reconnaissez une situation courante sur internet, quand un problème d'encodage rend les caractères accentués illisibles.
nsi/premiere/exercices/fonctions_encode_decode.txt · Dernière modification : de goupillwiki
