2012-03-26 15 views
132

Właśnie straciłem część mojego weekendu z tego powodu ... joker - zero szerokości przestrzeni. Użyłem tylko fragmentów z grup google i nie rozpoznałem, że istnieją podwójne znaki, ponieważ Idea (11) ich nie wyświetlał, co powodowało problemy z parsowaniem pliku konfiguracyjnego mojej aplikacji ... Odkryłem to przypadkowo w vi .Jak wyświetlać ukryte znaki domyślnie (ZERO WIDTH SPACE ie. & # 8203)

Czy istnieje sposób wyświetlania takich rzeczy w systemie IntelliJ (lub innym sposobie sprawdzania plików) bez korzystania z zewnętrznych edytorów.

IntelliJ 11/Mac OS 10.7

Edit - próbka

Te dwie linie wygląda identycznie w przeglądarce, a także w Idei. Możesz zobaczyć w kodzie strony, że w pierwszej linii komentarza ukryta jest zerowa szerokość między mysql:// i localhost, co powoduje problemy. Oczywiście, jeśli spodziewasz się tego "jokera", możesz spróbować użyć wyszukiwania i go zastąpić, jednak nikt nie spodziewa się znaku, który nie powinien tam być, szczególnie, jeśli nie widzi go w żaden sposób.

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

Znak ten powinien być zakazane przez traktat międzynarodowy. To broń masowego rozproszenia. Straciłem cały dzień próbując dowiedzieć się, co jest przyczyną tajemniczego błędu pojawiającego się w mojej konsoli js. Poważnie, postać o zerowej szerokości? To idealna recepta na kłopoty. Co myślał komitet normalizacyjny UTF? – Nick

+0

@Nick, Mam problemy z ładowaniem mojego JS (dostaję znak zapytania wewnątrz diamentu na końcu pliku) i uważam, że jest to problem z kodowaniem. Dostaję "Uncaught SyntaxError: nieoczekiwany token ILLEGAL" i trochę badań doprowadziło mnie do przekonania, że ​​jest to problem ukrytego symbolu. Jak znaleźć tę tajemniczą postać o zerowej szerokości, o której mówisz? Aby sprawdzić, czy to jest problem ... – Milkncookiez

Odpowiedz

254

Nie wiem, co masz na myśli, ale można na stałe włączyć pokazujące spacje i wyłączać w Settings -> Editor -> General -> Appearance -> Show whitespaces.

Można również ustawić dla bieżącego pliku tylko w View -> Active Editor -> Show WhiteSpaces.

Edit:

Miał trochę wolnego czasu, ponieważ wygląda jak popularny problem, napisałem plugin do kontroli kodu do takich nieprawidłowości. Nazywa się lokalizator Zero Width Characters i zapraszamy do give it a try.

+2

ellou 'Vic, dzięki za odpowiedź. Niestety ta opcja nie pokazuje "przestrzeni o zerowej szerokości" wspomnianej w temacie. Jestem pewien, że postać istnieje, ponieważ może wyświetlać ją np. Vi, ale nie widzę go w Idea:/ – biesior

+2

Widzę .. Myślę, że będziemy musieli poczekać aż CrazyCoder powie, że to nie jest obsługiwane lub coś takiego :) – Vic

+0

Hej, mam zainstalowany plugin ..ale to naprawdę nie działa dla postaci o zerowej długości, z którą mam problem .. –

-3

co z funkcją wyrażeń regularnych? Czy to nie ma znaczenia? [Ctrl] + [f] i wpisywanie wyrażeń regularnych ...

+3

Problem polega na tym, że nikt nie oczekuje znaków, jeśli ich nie widzi. W takiej sytuacji powinienem od czasu do czasu wykonywać rewizje maniakalne, żeby się upewnić, że nie skopiuję żadnego takiego jokera skądś. Edytowałem pytanie, możesz je zobaczyć sam, najpierw skomentowany wiersz zawiera białe spacje. – biesior

+2

Niektórzy mówią, że jeśli masz problem i próbujesz rozwiązać go za pomocą wyrażenia regularnego, masz dwa problemy ... ;-) – Piohen

+0

zaktualizowałeś to, by był bardziej skuteczny, i prawdopodobnie akceptowalną odpowiedzią –

42

Bardzo prostym rozwiązaniem jest przeszukiwanie plików dla znaków innych niż ascii za pomocą wyrażeń regularnych. To ładnie podkreśli wszystkie miejsca, w których są znalezione z granicą.

Wyszukaj [^\x00-\x7F] i zaznacz pole wyboru Regex.

Wynik będzie wyglądać następująco (w trybie ciemnym):

zero width space made visible

+0

Thx, faktycznie zaakceptowałem i podarował nagrodę Vicowi za wtyczkę, którą stworzył, aby rozwiązać problem, który jest powiązany pod koniec jego odpowiedzi. – biesior

+1

Tak, widziałem to. Zasługuje na to. Ale dla niektórych osób po prostu wykonanie tego wyszukiwania może być o wiele szybszym rozwiązaniem niż instalacja wtyczki. – Micros

+0

Widzę, co masz teraz na myśli, brzmiało to tak, jak mówię, że pierwsza odpowiedź nie działa. Przeformułowałem moją sugestię. – Micros