Python Language Gestion des erreurs d'encodage / décodage


Exemple

.encode et .decode ont tous deux des modes d'erreur.

La valeur par défaut est 'strict' , ce qui génère des exceptions en cas d'erreur. Les autres modes sont plus tolérants.

Codage

>>> "£13.55".encode('ascii', errors='replace')
b'?13.55'
>>> "£13.55".encode('ascii', errors='ignore')
b'13.55'
>>> "£13.55".encode('ascii', errors='namereplace')
b'\\N{POUND SIGN}13.55'
>>> "£13.55".encode('ascii', errors='xmlcharrefreplace')
b'£13.55'
>>> "£13.55".encode('ascii', errors='backslashreplace')
b'\\xa313.55'

Décodage

>>> b = "£13.55".encode('utf8')
>>> b.decode('ascii', errors='replace')
'��13.55'
>>> b.decode('ascii', errors='ignore')
'13.55'
>>> b.decode('ascii', errors='backslashreplace')
'\\xc2\\xa313.55'

Moral

Il ressort clairement de ce qui précède qu'il est essentiel de garder vos encodages corrects lorsque vous utilisez unicode et des octets.