URL: https://linuxfr.org/news/confusable-homoglyphs-une-bibliotheque-pour-gerer-les-caracteres-qui-se-ressemblent
Title: confusable-homoglyphs : une bibliothèque pour gérer les caractères qui se ressemblent
Authors: SpaceFox
Xavier Teyssier, Davy Defaud et Benoît Sibaud
Date: 2019年03月14日T00:05:02+01:00
Tags: jvm, bibliothèque, library, python, php, unicode et java
Score: 39
Bonjour tout le monde,
J’ai l’honneur de vous présenter une nouvelle bibliothèque Java (en fait compatible avec n’importe quel langage qui utilise la machine virtuelle Java, normalement) : **[confusable-homoglyphs](https://github.com/SpaceFox/confusable-homoglyphs)**. « Nouvelle » dans sa version Java, car c’est en réalité [un portage d’une bibliothèque Python](https://github.com/vhf/confusable_homoglyphs). Notez qu’il en existe aussi une [version PHP](https://github.com/photogabble/php-confusable-homoglyphs).
C’est un outil sous licence Apache 2.0 qui permet de gérer directement au sein d’une application les caractères Unicode qui se ressemblent, et donc qui sont source de confusion.
----
[Dépôt Git de confusables-homoglyphs (Java)](https://github.com/SpaceFox/confusable-homoglyphs)
[Version Python (originale) de confusables_homoglyphs](https://github.com/vhf/confusable_homoglyphs)
[Portage en PHP de confusable-homoglyphs](https://github.com/photogabble/php-confusable-homoglyphs)
[Retour d’expérience sur le portage Python → Java](https://zestedesavoir.com/billets/3090/jai-porte-une-lib-python-en-java/)
----
# Quel est donc le but de cette bibliothèque ?
Les humains utilisent divers systèmes d’écriture, et ce qui devait arriver, arriva : il y a des caractères qui se ressemblent (voire qui sont graphiquement identiques, selon la police d’écriture), mais qui sont différents. Or, [de telles confusions peuvent avoir des conséquences fâcheuses](https://zestedesavoir.com/tutoriels/3039/linternationalisation-et-ses-pieges-creer-un-logiciel-universel/gerer-differentes-langues/#gestion-des-diacritiques), par exemple :
- l’utilisateur « ΑlaskaJazz » (le premier Α est un alpha majuscule grec) peut se faire passer pour l’utilisateur « AlaskaJazz » (uniquement des lettres latines) ;
- on peut vous inciter à vous connecter sur _www.microsоft.com_ ou _www.faςebook.com_ au lieu de _www.microsoft.com_ ou _www.facebook.com_ ;
- etc., on pourrait multiplier les exemples désagréables à l’infini.
Si Unicode fournit des listes des caractères qui peuvent prêter à confusion, elles sont difficiles à utiliser en l’état : ce sont des fichiers textes avec un formatage particulier, qui plus est hébergés sur des serveurs instables et fréquemment hors ligne.
confusable-homoglyphs permet de gérer ces confusions en détectant et donnant des informations sur les caractères potentiellement problématiques.
# D’accord, mais comment ça s’utilise ?
La bibliothèque est disponible sur [Maven Central](https://search.maven.org/artifact/fr.spacefox/confusable-homoglyphs) et donc s’importe comme n’importe quelle autre bibliothèque Java, ici avec Maven ou Gradle :
```xml