FreeToGenerate.com

Fondé sur la propriété d'Unicode, pas sur la petite liste habituelle.

Collez le texte à examiner

Tout se passe dans votre navigateur. Collez un message, un nom de fichier, un commit, ou tout ce qui se comporte bizarrement quand vous le cherchez ou le comparez.

Ce qu'il y a dedans

30 caractères cachés trouvés · 29 d'entre eux sont invisibles selon la définition même d'Unicode

Point de codeNom UnicodeTypeOccurrencesEn
U+200BZERO WIDTH SPACElargeur nulle17
U+00A0NO-BREAK SPACEespace qui n'est pas une espace ordinaire115
U+E0069TAG LATIN SMALL LETTER Icaractère de balise, ne s'affiche pas421, 32, 37, 45
U+E0067TAG LATIN SMALL LETTER Gcaractère de balise, ne s'affiche pas122
U+E006ETAG LATIN SMALL LETTER Ncaractère de balise, ne s'affiche pas323, 38, 47
U+E006FTAG LATIN SMALL LETTER Ocaractère de balise, ne s'affiche pas324, 33, 46
U+E0072TAG LATIN SMALL LETTER Rcaractère de balise, ne s'affiche pas325, 29, 41
U+E0065TAG LATIN SMALL LETTER Ecaractère de balise, ne s'affiche pas226, 30
U+E0020TAG SPACEcaractère de balise, ne s'affiche pas227, 36
U+E0070TAG LATIN SMALL LETTER Pcaractère de balise, ne s'affiche pas128
U+E0076TAG LATIN SMALL LETTER Vcaractère de balise, ne s'affiche pas131
U+E0075TAG LATIN SMALL LETTER Ucaractère de balise, ne s'affiche pas234, 42
U+E0073TAG LATIN SMALL LETTER Scaractère de balise, ne s'affiche pas335, 39, 48
U+E0074TAG LATIN SMALL LETTER Tcaractère de balise, ne s'affiche pas240, 44
U+E0063TAG LATIN SMALL LETTER Ccaractère de balise, ne s'affiche pas143

Texte dissimulé dans le bloc de balises

ignore previous instructions

Les caractères de balise reproduisent l'ASCII à un décalage fixe et ne s'affichent pas du tout : une phrase entière peut donc voyager dans un texte qui paraît propre. Voici ce qu'ils épellent.

En quoi cela diffère d'un nettoyeur de texte

Presque tous les outils qui suppriment les caractères invisibles embarquent une liste écrite à la main des quelques-uns que leur auteur avait croisés. Notre propre nettoyeur en couvre treize. La propriété Default_Ignorable_Code_Point d'Unicode en couvre 4 174, dont 405 sont attribués et nommés : 392 caractères nommés sont donc invisibles par définition et une liste courte ne les mentionne même pas.

Le bloc de balises compte 97 caractères qui reproduisent l'ASCII et ne s'affichent pas. Ils servent aux séquences de drapeaux emoji, et ils sont aussi la façon de glisser du texte dans un message d'apparence ordinaire.

Tout ce qui figure ici n'est pas invisible au sens d'Unicode. Une espace insécable et un caractère de contrôle sont signalés aussi, parce qu'ils ne sont pas le caractère qu'ils paraissent être, et le tableau indique sur quelle autorité chaque ligne repose.

483 · 405 · 392

La liste de caractères est générée depuis les fichiers DerivedCoreProperties et UnicodeData d'Unicode. Les positions sont comptées en points de code : un emoji ou un caractère de balise compte donc une fois et non deux.

Aussi disponible en : English · Español · Português · العربية

Détecteur de caractères invisibles : trouvez les cachés

Tous les caractères invisibles, ignorables et déguisés de votre texte, nommés, comptés et localisés.

Qu'est-ce qu'un caractère invisible ?

Un caractère invisible est un point de code qui n'occupe aucune place visible mais se trouve bel et bien dans le texte. Certains sont utiles : un liant sans chasse est ce qui fusionne deux emojis en un seul, et un trait d'union conditionnel indique où un mot peut se couper. D'autres sont structurels, comme les contrôles bidirectionnels qui permettent à l'arabe et au français de partager une ligne. Et d'autres sont là parce que quelqu'un les y a mis.

Ils posent problème parce que le logiciel les voit et vous non. Une recherche qui devrait correspondre échoue. Deux chaînes d'apparence identique se comparent comme différentes. Une clé d'API copiée gagne un caractère au milieu et cesse de fonctionner, sans rien à l'écran pour l'expliquer.

Cette page les trouve, nomme chacun avec son nom officiel Unicode et son point de code, et indique où il se situe dans le texte. L'exemple chargé plus haut se lit comme vingt caractères visibles et fait en réalité quarante-neuf points de code.

Comment l'utiliser

  1. Collez le texte : n'importe quoi — un message, un nom de fichier, une cellule de tableur, un message de commit qu'aucun grep ne retrouve. Il est examiné dans votre navigateur et jamais envoyé.
  2. Lisez le tableau : chaque ligne est un caractère, avec son point de code, son nom Unicode, le type de chose dont il s'agit, son nombre d'occurrences et leur position.
  3. Puis retirez-les si vous voulez : un bouton supprime tous les caractères cachés et transforme les espaces bizarres en espaces ordinaires plutôt que de les effacer, pour que des mots visiblement séparés le restent.

Pourquoi cela trouve plus qu'un nettoyeur

Presque tous les outils qui suppriment les caractères invisibles embarquent une liste écrite à la main des quelques-uns que leur auteur avait rencontrés. C'est vrai du nettoyeur de texte de ce site aussi : sa liste couvre treize points de code, et c'est la raison d'être de cette page.

Unicode publie la vraie réponse sous forme d'une propriété nommée Default_Ignorable_Code_Point, qui marque les caractères pour lesquels un moteur de rendu ne doit rien afficher. Elle couvre 4 174 points de code, dont 405 sont des caractères attribués et nommés. Une liste de treize laisse donc de côté 392 caractères nommés invisibles par définition : les 260 sélecteurs de variante, l'intégralité du bloc de balises et ses 97 caractères, le liant de graphèmes, la marque de lettre arabe, les remplisseurs du hangûl.

Tout ce qui mérite d'être signalé n'est pas ignorable pour autant, aussi le tableau indique-t-il sur quelle autorité chaque ligne repose. Une espace insécable ressemble parfaitement à une espace, mais ce n'est pas celle sur laquelle un analyseur découpe, et un caractère de contrôle au milieu d'une ligne est invisible sans qu'Unicode le dise ignorable. Les deux sont signalés, et pour les deux on précise ce qu'ils sont.

Le bloc de balises, et le texte qu'on ne voit pas

Quatre-vingt-dix-sept caractères entre U+E0001 et U+E007F reproduisent exactement l'ASCII. Le A majuscule de balise est le A plus un décalage fixe, l'espace de balise est une espace, et aucun ne s'affiche. Ils ont un rôle légitime dans les séquences de drapeaux emoji, qui est la façon dont les drapeaux de l'Angleterre, de l'Écosse et du pays de Galles sont encodés.

Ils sont aussi le moyen de faire voyager une phrase à l'intérieur d'un texte d'apparence tout à fait ordinaire. Collez ici quelque chose qui en contient et la ligne décodée apparaît au-dessus, épelant ce qui était caché. L'exemple chargé sur cette page est exactement cela : vingt caractères visibles transportant une instruction que personne ne voit.

Ce n'est plus une curiosité mais une chose à vérifier, car le texte est désormais collé en permanence dans des systèmes qui lisent tous les caractères et pas seulement ceux qu'une personne voit. Que le texte caché soit un filigrane, un marqueur de traçage ou une instruction, la première étape honnête est de pouvoir le regarder.

Ce que cette page ne peut pas vous dire

Elle ne peut pas dire pourquoi un caractère est là. Un liant sans chasse au milieu d'un emoji fait son travail ; le même caractère entre deux lettres, non. L'outil rapporte ce qui est présent et vous laisse le jugement, car le même point de code est légitime dans un contexte et suspect dans un autre.

Il travaille aussi sur des points de code, pas sur ce que vous appelleriez des lettres. C'est la bonne unité ici — chaque caractère de balise et chaque sélecteur de variante moderne se situe au-delà du plan multilingue de base, si bien qu'un détecteur parcourant le texte de la façon naïve couperait chacun en deux et n'en trouverait aucun — mais cela signifie qu'un emoji de drapeau ou à teinte de peau compte pour plusieurs points de code et non pour un symbole.

Enfin, un résultat propre signifie qu'il n'y a rien de caché qu'Unicode nomme. Un texte peut encore tromper par des voies que cette page ne couvre pas, notamment en employant des lettres d'un autre alphabet identiques aux latines. C'est un autre problème, et une autre page.

Pourquoi est-ce gratuit ?

La liste de caractères tient en quelques kilo-octets livrés avec la page, et l'analyse s'exécute dans votre navigateur. Rien de ce que vous collez n'est envoyé, rien n'est journalisé, et il n'y a aucun compte à créer.

Sans inscription, sans limite, et sans filigrane sur ce que vous copiez.