Comment afficher les caractères cachés par défaut (ZERO WIDTH SPACE ie. & # 8203)

197

Je viens de perdre une partie de mon week-end à cause de cela ... joker - espace de largeur nulle. Je viens d'utiliser des extraits de groupes Google et je n'ai pas reconnu qu'il y avait des caractères doublés, car Idea (11) ne les montrait pas, ce qui posait des problèmes avec l'analyse du fichier de configuration de mon application ... Je l'ai découvert accidentellement dans vi .

Existe-t-il un moyen d'afficher de telles choses dans IntelliJ (ou une autre façon d'examiner les fichiers) sans utiliser d'éditeurs externes.

IntelliJ 11 / Mac OS 10.7

modifier - échantillon

Ces deux lignes semblent identiques, dans le navigateur et également 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 cause des problèmes. Bien sûr, si vous vous attendez à ce 'joker', vous pouvez essayer d'utiliser la recherche et le remplacer, mais personne ne s'attend à ce que le signe ne devrait pas être là, surtout s'il ne peut le voir en aucune façon.

#db.default.url="jdbc:mysql://​localhost/play-fullcalendar"
 db.default.url="jdbc:mysql://localhost/play-fullcalendar"
biesior
la source
22
Ce caractère devrait être interdit par un traité international. C'est une arme de distraction massive. J'ai perdu une journée entière à essayer de découvrir quelle est la cause d'une mystérieuse erreur apparaissant dans ma console js. Sérieusement, un caractère de largeur nulle? C'est une recette parfaite pour les ennuis. À quoi pensait le comité des normes UTF?
Nick
@ Nick, j'ai du mal à charger mon JS (je reçois un point d'interrogation à l'intérieur d'un losange, à la fin du fichier), et je pense que c'est un problème d'encodage. J'obtiens un Uncaught SyntaxError: Unexpected token ILLEGALpeu et un peu de recherche m'a conduit à l'idée que c'est un problème de symbole caché. Comment puis-je trouver ce mystérieux personnage de largeur nulle dont vous parlez? Juste pour voir si c'est le problème ...
Milkncookiez

Réponses:

359

Vous ne savez pas ce que vous vouliez dire, mais vous pouvez activer et désactiver définitivement l'affichage des espaces blancs Settings -> Editor -> General -> Appearance -> Show whitespaces.

Vous pouvez également le définir pour un fichier actuel uniquement dans View -> Active Editor -> Show WhiteSpaces.

Éditer:

A eu du temps libre car cela ressemble à un problème populaire, j'avais écrit un plugin pour inspecter le code pour de telles anomalies. Il est appelé localisateur de caractères de largeur nulle et vous êtes invité à l' essayer .

Vic
la source
4
ellou 'Vic, merci pour la réponse. Malheureusement, cette option n'affiche pas «l'espace de largeur nulle» mentionné dans le sujet. Je suis sûr que le personnage existe, car peut l'afficher avec ie. Vi, mais ne peut pas le voir dans Idea: /
biesior
2
Je vois .. Je suppose que nous devrons attendre que CrazyCoder dise que ce n'est pas pris en charge ou quelque chose comme ça :)
Vic
5
Commençant avec IntelliJ-14.1, il est caché dansSettings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
Rob
4
Est-il possible de faire les points au soumissionnaire des espaces blancs? comme dans Sublime
OlehZiniak
2
@WillSewell, vous pouvez affecter la couleur en sélectionnant Settings -> Editor -> Color Scheme -> General, puis dans cette catégorie, accédez à Text -> Whitespaces. J'ai changé le mien du premier plan par défaut # 505050 en # 404040, et je les trouve visibles mais pas
gênantes
81

Une solution très simple consiste à rechercher dans votre fichier (s) des caractères non-ascii en utilisant une expression régulière. Cela mettra bien en évidence tous les endroits où ils se trouvent avec une bordure.

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

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

espace de largeur nulle rendu visible

Micros
la source
Thx, 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.
biesior
2
Oui, je l'ai vu. C'est bien mérité. Mais pour certaines personnes, cette simple recherche peut être une solution beaucoup plus rapide que l'installation d'un plugin.
Micros
J'ai utilisé cela dans un script PHP pour créer du contenu HTML très bien formaté pour la migration dans WordPress:$string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
aequalsb
@Micros. Existe-t-il un éditeur pour Windows qui recherche dans les fichiers des caractères non ascii à l'aide d'une expression régulière? Dans mon cas, je dois trouver «\ u11891» pour corriger ce type d'erreurs: SyntaxError: caractère non valide «\ u11891
user1788736
@ user1788736 Oui, de nombreux éditeurs de coloration syntaxique le prennent en charge. Vous pouvez utiliser Sublime Text ou l'une des applications JetBrains, comme WebStorm ou IntelliJ.
Micros