Come visualizzare i caratteri nascosti per impostazione predefinita (ZERO WIDTH SPACE ie. & # 8203)


197

Ho appena perso parte del mio fine settimana a causa di questo ... joker - spazio a larghezza zero. Ho appena usato alcuni frammenti di gruppi di Google e non ho riconosciuto che ci sono personaggi raddoppiati, perché Idea (11) non li ha mostrati, il che stava causando problemi con l'analisi del file di configurazione della mia app ... L'ho scoperto per caso in vi .

Esiste un modo per visualizzare tali cose in IntelliJ (o in qualche altro modo per esaminare i file) senza utilizzare editor esterni.

IntelliJ 11 / Mac OS 10.7

modifica - campione

Queste due linee sembrano identiche, nel browser e anche in Idea. Puoi vedere nel codice della pagina che nella prima riga commentata c'è uno spazio di larghezza zero nascosto tra mysql://e localhost, che causa problemi. Ovviamente se ti aspetti che 'joker', puoi provare a usare la ricerca e sostituirlo, tuttavia nessuno si aspetta il segno che non dovrebbe essere lì, soprattutto se non riesce a vederlo in alcun modo.

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

22
Questo personaggio dovrebbe essere bandito da un trattato internazionale. È un'arma di grande distrazione. Ho perso un'intera giornata cercando di scoprire qual è la causa di un misterioso errore che appare nella mia console js. Scherzi a parte, un personaggio di larghezza zero? Questa è una ricetta perfetta per i problemi. Cosa stava pensando il comitato per gli standard UTF?
Nick,

@Nick, ho problemi a caricare il mio JS (sto ricevendo un punto interrogativo all'interno di un diamante, alla fine del file), e credo che sia un problema di codifica. Ricevo Uncaught SyntaxError: Unexpected token ILLEGALun po 'di ricerche che mi hanno portato all'idea che si tratta di un problema con simboli nascosti. Come trovo questo misterioso personaggio a larghezza zero di cui stai parlando? Solo per vedere se questo è il problema ...
Milkncookiez,

Risposte:


359

Non sei sicuro di cosa volevi dire, ma puoi attivare e disattivare la visualizzazione permanente degli spazi bianchi Settings -> Editor -> General -> Appearance -> Show whitespaces.

Inoltre, è possibile impostarlo per un file corrente solo in View -> Active Editor -> Show WhiteSpaces.

Modificare:

Ho avuto un po 'di tempo libero da quando sembra un problema popolare, avevo scritto un plugin per ispezionare il codice per tali anomalie. Si chiama localizzatore di caratteri a larghezza zero e non esitare a provarlo .


4
ellou 'Vic, grazie per la risposta. Sfortunatamente questa opzione non mostra lo 'spazio a larghezza zero' menzionato nel soggetto. Sono sicuro che il personaggio esiste, perché può visualizzarlo con ie. Vi, ma non riesco a vederlo in Idea: /
biesior il

2
Vedo .. Immagino che dovremo aspettare che CrazyCoder dica che non è supportato o qualcosa del genere :)
Vic

5
A partire da IntelliJ-14.1 è nascosto inSettings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
Rob

4
È possibile fare offerte di punti in spazi bianchi? come in Sublime
OlehZiniak l'

2
@WillSewell, puoi influenzare il colore selezionando Settings -> Editor -> Color Scheme -> General, quindi all'interno di quella categoria, vai a Text -> Whitespaces. Ho cambiato il mio dal primo piano predefinito # 505050 a # 404040, e li trovo visibili ma non distraggono
chaserb

81

Una soluzione molto semplice è quella di cercare nei tuoi file caratteri non ascii usando un'espressione regolare. Ciò evidenzierà bene tutti i punti in cui si trovano con un bordo.

Cerca [^\x00-\x7F]e seleziona la casella Regex.

Il risultato sarà simile al seguente (in modalità oscura):

spazio a larghezza zero reso visibile


Grazie, in realtà ho accettato e dato una generosità alla risposta di Vic per un plugin che ha creato per risolvere il problema, che è collegato alla fine della sua risposta.
Biesior,

2
Sì, l'ho visto. È meritato. Ma per alcune persone semplicemente fare questa ricerca potrebbe essere una soluzione molto più rapida dell'installazione di un plugin.
Micros,

l'ho usato in uno script php per creare contenuti HTML ben formattati per la migrazione a WordPress:$string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
aequalsb,

@Micros. Esiste un editor per windows che cerca i file per caratteri non ascii usando un'espressione regolare? Nel mio caso ho bisogno di trovare '\ u11891' per correggere questo tipo di errori: SintassiError: carattere non valido '\ u11891
user1788736

@ user1788736 Sì, molti editor per l'evidenziazione della sintassi supportano questo. È possibile utilizzare Sublime Text o una delle applicazioni JetBrains, come WebStorm o IntelliJ.
Micros,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.