Standardmäßig werden versteckte Zeichen angezeigt (ZERO WIDTH SPACE, dh & # 8203).

197

Ich habe gerade einen Teil meines Wochenendes wegen dieses ... Jokers verloren - Raum ohne Breite. Ich habe nur einige Ausschnitte aus Google-Gruppen verwendet und nicht erkannt, dass es doppelte Zeichen gibt, da Idea (11) sie nicht angezeigt hat, was Probleme beim Parsen der Konfigurationsdatei meiner App verursachte ... Ich habe sie versehentlich in vi entdeckt .

Gibt es eine Möglichkeit, solche Dinge in IntelliJ anzuzeigen (oder eine andere Möglichkeit, Dateien zu untersuchen), ohne externe Editoren zu verwenden?

IntelliJ 11 / Mac OS 10.7

bearbeiten - Probe

Diese beiden Zeilen sehen im Browser und auch in Idea identisch aus. Sie können im Code der Seite sehen, dass in der ersten kommentierten Zeile ein versteckter Abstand von null zwischen mysql://und ist localhost, was zu Problemen führt. Wenn Sie diesen "Joker" erwarten, können Sie natürlich versuchen, ihn zu suchen und zu ersetzen. Allerdings erwartet niemand das Zeichen, das nicht vorhanden sein sollte, insbesondere wenn er es in keiner Weise sehen kann.

#db.default.url="jdbc:mysql://​localhost/play-fullcalendar"
 db.default.url="jdbc:mysql://localhost/play-fullcalendar"
biesior
quelle
22
Dieser Charakter sollte durch einen internationalen Vertrag verboten werden. Es ist eine Waffe der massiven Ablenkung. Ich habe einen ganzen Tag verloren, um herauszufinden, was die Ursache für einen mysteriösen Fehler ist, der in meiner js-Konsole auftaucht. Ernsthaft, ein Zeichen mit der Breite Null? Das ist ein perfektes Rezept für Ärger. Was dachte das UTF-Normungskomitee?
Nick
@Nick, ich habe Probleme beim Laden meines JS (ich bekomme ein Fragezeichen in einem Diamanten am Ende der Datei), und ich glaube, es ist ein Codierungsproblem. Ich habe Uncaught SyntaxError: Unexpected token ILLEGALein bisschen Nachforschungen angestellt und bin auf die Idee gekommen, dass es sich um ein Problem mit versteckten Symbolen handelt. Wie finde ich dieses mysteriöse Zeichen mit der Breite Null, von dem Sie sprechen? Nur um zu sehen, ob das das Problem ist ...
Milkncookiez

Antworten:

359

Sie sind sich nicht sicher, was Sie gemeint haben, aber Sie können die Anzeige von Leerzeichen dauerhaft ein- und ausschalten Settings -> Editor -> General -> Appearance -> Show whitespaces.

Sie können es auch nur für eine aktuelle Datei festlegen View -> Active Editor -> Show WhiteSpaces.

Bearbeiten:

Ich hatte etwas Freizeit, da es wie ein beliebtes Problem aussieht. Ich hatte ein Plugin geschrieben, um den Code auf solche Anomalien zu untersuchen. Es heißt Zero Width Characters Locator und Sie können es gerne ausprobieren .

Vic
quelle
4
Ellou 'Vic, danke für die Antwort. Leider zeigt diese Option nicht den im Betreff genannten "Raum mit der Breite Null" an. Ich bin sicher, dass der Charakter existiert, weil er mit dh angezeigt werden kann. Vi, aber ich kann es nicht in Idee sehen: /
biesior
2
Ich verstehe ... ich denke, wir müssen warten, bis CrazyCoder sagt, dass es nicht unterstützt wird oder so :)
Vic
5
Beginnend mit IntelliJ-14.1 ist es versteckt inSettings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
Rob
4
Ist es möglich, die Punkte bei Bietern für Leerzeichen zu machen? wie in Sublime
OlehZiniak
2
@ WillSewell, Sie können die Farbe beeinflussen, indem Sie auswählen Settings -> Editor -> Color Scheme -> Generalund dann innerhalb dieser Kategorie zu gehen Text -> Whitespaces. Ich habe meine vom Standard-Vordergrund # 505050 in # 404040 geändert und finde sie sichtbar, aber nicht ablenkend
Chaserb
81

Eine sehr einfache Lösung besteht darin, Ihre Datei (en) mit einem regulären Ausdruck nach Nicht-ASCII-Zeichen zu durchsuchen. Dadurch werden alle Stellen, an denen sie gefunden werden, mit einem Rand hervorgehoben.

Suchen Sie [^\x00-\x7F]nach Regex und aktivieren Sie das Kontrollkästchen.

Das Ergebnis sieht folgendermaßen aus (im dunklen Modus):

Raum mit der Breite Null sichtbar gemacht

Micros
quelle
Thx, eigentlich habe ich akzeptiert und der Antwort des Vic ein Kopfgeld für ein Plugin gegeben, das er erstellt hat, um das Problem zu lösen, das am Ende seiner Antwort verlinkt ist.
Biesior
2
Ja, das habe ich gesehen. Es ist gut verdient. Für einige Leute ist diese Suche möglicherweise eine viel schnellere Lösung als die Installation eines Plugins.
Micros
Ich habe dies in einem PHP-Skript verwendet, um sehr gut formatierte HTML-Inhalte für die Migration in WordPress zu $string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
erstellen
@Micros. Gibt es einen Editor für Windows, der Dateien mit einem regulären Ausdruck nach Nicht-ASCII-Zeichen durchsucht? In meinem Fall muss ich '\ u11891' finden, um diese Art von Fehlern zu beheben: SyntaxError: Ungültiges Zeichen '\ u11891
user1788736
@ user1788736 Ja, viele Editoren zur Syntaxhervorhebung unterstützen dies. Sie können Sublime Text oder eine der JetBrains-Anwendungen wie WebStorm oder IntelliJ verwenden.
Micros