219 votes

Comment afficher les caractères masqués par défaut (ESPACE DE LARGEUR ZÉRO c'est-à-dire ​)

J'ai juste perdu une partie de mon week-end à cause de ce... joker - espace de largeur nulle. J'ai utilisé quelques extraits de groupes Google et je n'ai pas remarqué qu'il y avait des caractères en double, car Idea (11) ne les affichait pas, ce qui posait des problèmes d'analyse du fichier de configuration de mon application... Je l'ai découvert accidentellement dans vi.

Y a-t-il un moyen d'afficher de telles choses dans IntelliJ (ou d'examiner les fichiers d'une autre manière) sans utiliser d'éditeurs externes.

IntelliJ 11 / Mac OS 10.7

éditer - exemple

Ces deux lignes semblent identiques, dans le navigateur et aussi dans Idea. Vous pouvez voir dans le code de la page que dans la première ligne commentée, il y a un espace de largeur nulle caché entre mysql:// et localhost, ce qui pose problème. Bien sûr, si vous vous attendez à ce "joker", vous pouvez essayer de le rechercher et de le remplacer, cependant personne ne s'attend au signe qui ne devrait pas être là, surtout s'il ne peut pas le voir de quelque façon que ce soit.

#db.default.url="jdbc:mysql://localhost/play-fullcalendar"
 db.default.url="jdbc:mysql://localhost/play-fullcalendar"

34 votes

Ce caractère devrait être interdit par un traité international. C'est une arme de distraction massive. J'ai perdu toute une journée à essayer de comprendre la cause d'une erreur mystérieuse apparaissant dans ma console js. Sérieusement, un caractère de largeur zéro ? C'est une recette parfaite pour les ennuis. À quoi pensait le comité des normes UTF ?

5 votes

@Nick votre commentaire m'a inspiré à trouver pourquoi l'UTF incluait cette chose de blagueur. Jetez un œil à la beauté du ZeroWidthCharacter : ptiglobal.com/2018/04/26/…

0 votes

Un espace de largeur zéro est également très utile sur par exemple Twitter avec leurs hashtags et tout cela. Si vous voulez écrire "#FlatEarther", mais que vous voulez que le hashtag se termine à "h", mettez un espace de largeur zéro là. "er" sera un texte normal.

400voto

Vic Points 4580

Pas sûr de ce que vous vouliez dire, mais vous pouvez activer et désactiver définitivement l'affichage des espaces blancs dans Paramètres -> Éditeur -> Général -> Apparence -> Afficher les espaces blancs.

De plus, vous pouvez le définir pour un fichier actuel uniquement dans Affichage -> Éditeur actif -> Afficher les espaces blancs.

Éditer:

J'avais un peu de temps libre puisque cela semble être un problème courant, j'avais écrit un plugin pour inspecter le code à la recherche de telles anomalies. Il s'appelle Localisateur de caractères de largeur zéro et vous êtes invité à l'essayer.

5 votes

Ellou ' Vic, merci pour votre réponse. Malheureusement, cette option ne montre pas l'espace de largeur zéro mentionné dans le sujet. Je suis sûr que le caractère existe, car je peux l'afficher avec ie. Vi, mais je ne peux pas le voir dans Idea :/

2 votes

Je vois.. Je suppose que nous devrons attendre que CrazyCoder dise que ce n'est pas pris en charge ou quelque chose comme ça :)

0 votes

Hé, j'ai installé le plugin.. mais ça ne fonctionne pas vraiment pour le caractère de longueur zéro avec lequel j'ai un problème..

91voto

Micros Points 418

Une solution très simple est de rechercher dans votre(s) fichier(s) les caractères non-ascii à l'aide d'une expression régulière. Cela mettra en évidence tous les endroits où ils sont trouvés avec une bordure.

Recherchez [^\x00-\x7F] et cochez la case pour Regex.

Le résultat ressemblera à ceci (en mode sombre):

espace invisible rendu visible

0 votes

Merci, en fait j'ai accepté et donné une prime à la réponse de Vic pour un plugin qu'il a créé pour résoudre le problème, qui est lié à la fin de sa réponse.

5 votes

Oui, j'ai vu cela. C'est bien mérité. Mais pour certaines personnes, simplement faire cette recherche pourrait être une solution beaucoup plus rapide que d'installer un plugin.

0 votes

J'ai utilisé ceci dans un script php pour créer du contenu HTML très bien formaté pour la migration vers WordPress : $string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );

-3voto

thejartender Points 2704

Qu'en est-il de la fonctionnalité regex? N'est-ce pas pertinent? [Ctrl] + [f] et tapez regex...

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