Як відображати приховані символи за замовчуванням (ZERO WIDTH SPACE, тобто. & # 8203)


197

Я просто втратив частину своїх вихідних через це ... джокер - простір нульової ширини. Я просто використав кілька фрагментів з груп google і не визнав, що є подвоєні символи, тому що Idea (11) їх не показав, що спричиняло проблеми з розбором конфігураційного файлу мого додатка ... Я виявив це випадково в vi .

Чи є спосіб відобразити такі речі в IntelliJ (або якийсь інший спосіб вивчення файлів) без використання зовнішніх редакторів.

IntelliJ 11 / Mac OS 10.7

редагувати - зразок

Ці два рядки виглядають однаково, як у браузері, так і в Idea. У коді сторінки видно, що в першому коментованому рядку є прихований нульовий простір між mysql://і localhost, що спричиняє проблеми. Звичайно, якщо ви очікуєте, що "жартівник", ви можете спробувати скористатися пошуком і замінити його, проте ніхто не очікує, що знак, якого там не повинно бути, особливо якщо він не може його бачити жодним чином.

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

22
Цей персонаж повинен бути заборонений міжнародним договором. Це зброя масового відволікання. Я втратив цілий день, намагаючись з’ясувати, в чому причина таємничої помилки, що з’являється на моїй консолі js. Серйозно, символ нульової ширини? Це ідеальний рецепт неприємностей. Що думав комітет зі стандартів UTF?
Нік

@Nick, у мене виникають проблеми з завантаженням мого JS (я отримую знак питання всередині алмазу, в кінці файлу), і я вважаю, що це проблема кодування. Я отримую, Uncaught SyntaxError: Unexpected token ILLEGALі трохи дослідження привели мене до думки, що це прихована проблема символів. Як я можу знайти цей загадковий символ нульової ширини, про який ти говориш? Тільки щоб дізнатися, чи це проблема ...
Milkncookiez

Відповіді:


359

Не впевнені, що ви мали на увазі, але ви можете назавжди вмикати та вимикати білі простори Settings -> Editor -> General -> Appearance -> Show whitespaces.

Крім того, ви можете встановити його для поточного файлу лише в View -> Active Editor -> Show WhiteSpaces.

Редагувати:

Якщо було трохи вільного часу, оскільки це виглядає як популярна проблема, я написав плагін, щоб перевірити код на предмет таких відхилень. Він називається локатором знаків нульової ширини, і ви можете спробувати .


4
ellou 'Вік, дякую за відповідь. На жаль, ця опція не містить "нульової ширини", згаданої в темі. Я впевнений, що персонаж існує, тому що може відобразити його, тобто. Vi, але не бачу його в Idea: /
biesior

2
Я бачу .. Напевно, нам доведеться чекати, коли CrazyCoder скаже, що це не підтримується чи щось подібне :)
Вік,

5
Починаючи з IntelliJ-14.1, він прихований уSettings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
Роб

4
Чи можна зробити крапки на білих просторах? як у Sublime
OlehZiniak

2
@WillSewell, ви можете вплинути на колір, вибравши Settings -> Editor -> Color Scheme -> General, потім у цій категорії перейдіть до Text -> Whitespaces. Я змінив шахту з переднього плану за замовчуванням №505050 на # 404040 і вважаю їх видимими, але не відволікаючими
chaserb

81

Дуже просте рішення - пошук у ваших файлах (файлів) для символів, що не належать до ascii, використовуючи регулярний вираз. Це чудово виділить усі плями, де вони виявлені з облямівкою.

Шукайте [^\x00-\x7F]та встановіть прапорець Regex.

Результат буде виглядати приблизно так (у темному режимі):

простір нульової ширини стає видимим


Thx, насправді я прийняв і дав нагороду відповіді Віка за плагін, який він створив, щоб вирішити проблему, яка пов'язана в кінці його відповіді.
biesior

2
Так, я це бачив. Це заслужено. Але для деяких людей просто цей пошук може бути набагато швидшим рішенням, ніж встановлення плагіна.
Мікрос

Я використовував це в PHP-скрипті, щоб зробити дуже добре відформатований контент HTML для міграції в WordPress:$string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
aequalsb

@Micros. Чи є редактор для Windows, який шукає файли (файли) для символів, що не належать ascii, використовуючи регулярний вираз? У моєму випадку мені потрібно знайти "\ u11891", щоб виправити помилки цього типу: SyntaxError: Недійсний символ '\ u11891
user1788736

@ user1788736 Так, багато редакторів із виділення синтаксису підтримують це. Ви можете використовувати Sublime Text або будь-яке з додатків JetBrains, як-от WebStorm або IntelliJ.
Мікрос

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.