87 votes

Caractères invisibles - ASCII

Existe-t-il des invisible des personnages ? J'ai cherché sur Google des caractères invisibles et j'ai trouvé de nombreuses réponses, mais je ne suis pas sûr de ces caractères. Quelqu'un sur Stack Overflow peut-il m'en dire plus à ce sujet ?

J'ai également vérifié un profil sur Facebook et j'ai constaté que l'utilisateur n'avait pas de nom dans son profil ? Comment cela est-il possible ? S'agit-il d'un problème de base de données ? Un piratage ou quelque chose comme ça ?

En faisant des recherches sur Internet, j'ai découvert que 200D est une valeur ASCII avec un invisible caractère. Est-ce vrai ?

141voto

FlameBlazer Points 1384

Je viens de parcourir la carte des personnages pour les obtenir. Ils sont tous en Calibri.

Number    Name                   HTML Code    Appearance
------    --------------------   ---------    ----------
U+2000    En Quad                       " "
U+2001    Em Quad                       " "
U+2002    En Space                      " "
U+2003    Em Space                      " "
U+2004    Three-Per-Em Space            " "
U+2005    Four-Per-Em Space             " "
U+2006    Six-Per-Em Space              " "
U+2007    Figure Space                  " "
U+2008    Punctuation Space             " "
U+2009    Thin Space                    " "
U+200A    Hair Space                    " "
U+200B    Zero-Width Space       ​      "​"
U+200C    Zero Width Non-Joiner  ‌      "‌"
U+200D    Zero Width Joiner      ‍      "‍"
U+200E    Left-To-Right Mark     ‎      "‎"
U+200F    Right-To-Left Mark     ‏      "‏"
U+202F    Narrow No-Break Space         " "

129voto

Billybob Points 1250

La manière dont un caractère est représenté dépend du moteur de rendu, mais le serveur peut également supprimer certains caractères avant d'envoyer le document.

Vous pouvez également avoir des vidéos YouTube sans titre comme https://www.youtube.com/watch?v=dmBvw8uPbrA en utilisant le caractère Unicode NON JOINTIF DE LARGEUR NULLE (U+200C) ou ‌ en HTML. Le bloc de code ci-dessous doit contenir ce caractère :

10voto

Mr PizzaGuy Points 357

Il existe en fait un personnage véritablement invisible : U+FEFF . Ce caractère est appelé marque d'ordre d'octet et est lié au système Unicode 8. Il s'agit d'un concept vraiment déroutant qui peut être expliqué comme suit ICI La marque d'ordre d'octet ou BOM est un caractère invisible qui ne prend pas de place. Vous pouvez copier le caractère ci-dessous entre le > y < .

Voici le personnage :

> <

Comment attraper ce personnage en action :

  • Copier le caractère entre les > y < ,
  • Écrivez une ligne de texte, puis placez votre caret au hasard dans la ligne de texte.
  • Collez le caractère dans la ligne.
  • Allez au début de la ligne et appuyez sur la touche fléchée vers la droite et maintenez-la enfoncée.

Vous remarquerez que lorsque votre curseur arrive à l'endroit où vous avez collé le caractère, il s'arrête brièvement pendant environ une demi-seconde. C'est parce que le curseur passe au-dessus du caractère invisible. Même si vous ne pouvez pas le voir, cela ne signifie pas qu'il n'est pas là. Le curseur voit toujours qu'il y a un personnage dans la zone où vous avez collé le BOM et il le traverse. Comme la nomenclature est invisible, le curseur semblera s'être arrêté pendant un bref instant. Vous pouvez coller le BOM plusieurs fois dans une zone et refaire les étapes ci-dessus pour bien montrer l'effet. Bonne chance !

EDIT : Malheureusement, Stackoverflow n'aime pas le caractère. Voici un exemple tiré de w3.org : https://www.w3.org/International/questions/examples/phpbomtest.php

6voto

Varun Mathur Points 37

Les autres réponses sont correctes - l'invisibilité d'un caractère dépend de la police utilisée. Cette liste de caractères vraiment invisibles (même pas l'espace) me semble assez bonne. Elle contient des caractères que les autres listes ne contiennent pas.

'\u2060', // Word Joiner
'\u2061', // FUNCTION APPLICATION
'\u2062', // INVISIBLE TIMES
'\u2063', // INVISIBLE SEPARATOR
'\u2064', // INVISIBLE PLUS
'\u2066', // LEFT - TO - RIGHT ISOLATE
'\u2067', // RIGHT - TO - LEFT ISOLATE
'\u2068', // FIRST STRONG ISOLATE
'\u2069', // POP DIRECTIONAL ISOLATE
'\u206A', // INHIBIT SYMMETRIC SWAPPING
'\u206B', // ACTIVATE SYMMETRIC SWAPPING
'\u206C', // INHIBIT ARABIC FORM SHAPING
'\u206D', // ACTIVATE ARABIC FORM SHAPING
'\u206E', // NATIONAL DIGIT SHAPES
'\u206F', // NOMINAL DIGIT SHAPES
'\u200B', // Zero-Width Space
'\u200C', // Zero Width Non-Joiner
'\u200D', // Zero Width Joiner
'\u200E', // Left-To-Right Mark
'\u200F', // Right-To-Left Mark
'\u061C', // Arabic Letter Mark
'\uFEFF', // Byte Order Mark
'\u180E', // Mongolian Vowel Separator
'\u00AD'  // soft-hyphen

-1voto

avcado Points 51

Un personnage invisible est ou U+200b

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X