Que produisent les commandes suivantes – en console Python :
>>>"école".encode('ascii')
>>> "école".encode('iso-8859-1')
>>> "école".encode('utf-8')
Comprendre le résultat :
b en tête de la réponse, signifie que ce n'est plus un texte mais une suite d'octets (byte).é était codé par l'octet E9. En UTF-8, ce même é était codé par les deux octets C3 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 :
C3 A9 sont compris comme ©E9 suivi 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.