Unicode, c'est simple sauf quand c'est compliqué
par Vincent Poulailleau - 3 minutes de lecture - 462 mots
Sommaire :
Unicode, le problème
Unicode, c’est simple sauf quand c’est compliqué !
Oui, le texte « Python est génial » n’est pas le même que « Python est génial ». Pourtant il s’affiche pareil !
|
|
La normalization
Qu’est-ce que c’est que ces histoires de normalisation ? Un « é » peut être un « e accent aigu », mais il peut être aussi un « e » suivi d’un « accent aigu qui se combine avec le caractère précédent ». Ce sera dans ce cas deux caractères et non un seul.
Il est possible de le voir avec deux petits programmes Python :
|
|
Et
|
|
Il existe plusieurs façons de normaliser un texte, c’est à dire choisir systématiquement la même combinaison de caractères pour un caractère affiché :
- e accent aigu : c’est la version appelée forme normale canonique (NFC en anglais)
- e suivi d’un accent qui se combine, c’est la version appelée forme normale décomposée (NFD en anglais)
- d’autres formes encore, tout le détail est dans la documentation officielle : https://docs.python.org/fr/3/library/unicodedata.html#unicodedata.normalize
Malheureusement pour nous, il existe de nombreuses subtilités en Unicode. À moins que ce ne soit fait pour le plaisir des testeurs !
Et vous, Unicode vous a surpris ?