Caractères invisibles dans un texte : où ils se cachent et comment les supprimer
Les caractères invisibles sont des points de code Unicode qui ne s'affichent pas, comme les espaces de largeur nulle, les espaces insécables et les marques de direction. Ils ressemblent à une espace ordinaire ou à rien du tout : le texte paraît correct, mais la recherche, le code et la validation des formulaires le traitent comme un texte différent. On les repère en inspectant les points de code, et on les retire en supprimant ou en remplaçant ces caractères précis.
Supprimer les caractères invisiblesCaractères invisibles gênantsEssayer gratuitementD'où ils viennent
La plupart des caractères invisibles arrivent par copier-coller, et non par la frappe :
- Pages web. Les sites utilisent des espaces insécables (U+00A0) pour empêcher deux mots de se séparer en fin de ligne, et des espaces de largeur nulle (U+200B) pour marquer l'endroit où un mot long peut être coupé. Copier un passage copie aussi ces caractères.
- Traitements de texte. Les traits d'union conditionnels (U+00AD) sont insérés pour la césure. Ils restent invisibles, sauf si une ligne se coupe à cet endroit. Certains éditeurs insèrent aussi automatiquement des espaces insécables à certains endroits.
- Messageries et e-mails. Les messages copiés depuis une messagerie instantanée ou un client e-mail peuvent contenir des joiners de largeur nulle et des marques de direction, surtout lorsque le texte mêle plusieurs langues.
- Texte à direction mixte. L'arabe, l'hébreu et les textes mixtes utilisent des marques de direction comme la marque de gauche à droite (U+200E), la marque de droite à gauche (U+200F) et les caractères d'intégration et de substitution (U+202A à U+202E). Ils règlent l'affichage de la ligne, pas son contenu.
- Marques d'ordre des octets. Une marque d'ordre des octets (BOM, U+FEFF) placée au début d'un fichier sert de signature à certains éditeurs. Elle est invisible, mais elle devient un vrai premier caractère lorsque le fichier est lu comme texte brut.
- Fenêtres de chat IA. Le texte copié depuis certaines interfaces de chat IA peut aussi contenir ces caractères. La cause probable tient à la façon dont le texte a été affiché et copié, donc n'y voyez pas une intention.
Pourquoi ils posent problème
Chaque caractère invisible est un vrai point de code : il modifie le texte même lorsque la page semble identique.
- La recherche échoue. Une espace de largeur nulle au milieu d'un mot casse la correspondance, si bien qu'une recherche de ce mot ne donne rien.
- Le code casse. Une espace insécable dans un fichier source est une erreur de syntaxe dans beaucoup de langages, et l'erreur pointe souvent vers une ligne qui semble parfaite. Le guide sur les guillemets courbes traite l'autre problème courant de collage dans le code.
- La validation des formulaires rejette la saisie. Une adresse e-mail contenant une espace de largeur nulle après le @ paraît valide, mais échoue au contrôle.
- Les comptages dérivent. Selon l'outil, les caractères invisibles sont comptés ou non, si bien qu'un même texte peut afficher deux totaux différents. Comptez le texte avant et après nettoyage avec le compteur de mots pour voir la différence.
Voici un petit exemple. Le mot « facture » compte sept lettres. Avec une espace de largeur nulle au milieu, le même mot fait huit points de code, et il s'affiche exactement de la même façon à l'écran. Une recherche de « facture » ne trouvera pas la seconde version.
Comment les voir
Regarder le texte ne suffit pas. Utilisez l'un de ces moyens :
- Collez le texte dans un outil qui liste les points de code, comme supprimer les caractères invisibles, qui indique ce qu'il trouve avant de modifier quoi que ce soit.
- Dans un éditeur de code, activez l'option qui affiche les espaces et les caractères spéciaux. Les espaces insécables apparaissent alors avec un signe différent des espaces ordinaires.
- Dans un langage de programmation, affichez les points de code d'une chaîne suspecte. En Python, par exemple,
[hex(ord(c)) for c in text]les liste un à un : une espace insécable apparaît sous 0xa0 et une espace de largeur nulle sous 0x200b.
Comment les supprimer
La suppression doit être ciblée. Supprimer tous les caractères non ASCII détruirait aussi les accents, les guillemets et les lettres d'autres langues. Il vaut mieux procéder ainsi :
- Remplacez les espaces insécables par des espaces normales, car elles sont presque toujours destinées à être des espaces.
- Supprimez les espaces de largeur nulle, les traits d'union conditionnels, les marques d'ordre des octets et les marques de direction isolées.
- Conservez les lettres accentuées, les guillemets courbes et la ponctuation réelle.
Corriger un texte collé est conçu pour les textes venus d'ailleurs : utilisez-le lorsque la copie présente aussi des retours à la ligne cassés ou des espacements bizarres.
Comment faire avec fixmint
- Collez le texte dans Votre texte.
- Lisez la liste de ce qui a été trouvé. Chaque caractère est nommé, comme ZWSP pour une espace de largeur nulle, et accompagné de ce qui va lui arriver.
- Gardez cochée l'option Conserver les joiners dans les emoji pour que les séquences d'emoji restent affichées comme un seul symbole.
- Cochez Convertir aussi les guillemets courbes, les tirets cadratin et demi-cadratin et … en ASCII simple uniquement pour du code ou des données, puis utilisez Copier ou Télécharger .txt.
Cas particuliers
- Les séquences d'emoji utilisent volontairement des joiners de largeur nulle. Les supprimer découpe un emoji en plusieurs symboles.
- Une espace insécable est correcte dans certaines typographies, par exemple entre un nombre et son unité, et dans certaines ponctuations françaises. Ne la remplacez que lorsque vous savez qu'elle est parasite.
- Une fois le texte nettoyé, comparez-le avec l'original pour voir précisément ce qui a changé.
Réponses rapides
Les caractères invisibles sont-ils la preuve qu'une IA a écrit le texte ?
Non. Ils viennent des pages web, des traitements de texte, des messageries et du copier-coller en général. Leur présence ne révèle pas qui ou quoi a écrit le texte.
Supprimer tous les caractères non ASCII résout-il le problème ?
Non. Cela supprimerait aussi les accents, les guillemets et les lettres d'autres langues. Supprimez plutôt les points de code invisibles précis.
Comment savoir si une chaîne contient des caractères invisibles ?
Comparez sa longueur au nombre de caractères que vous voyez, ou collez-la dans un outil qui liste les points de code. Si les totaux diffèrent, c'est qu'un élément invisible s'y cache.
Traduit de Version originale anglaise avec l’aide de l’IA.
Commentaires
Aucun commentaire pour l’instant. Soyez le premier.


