Что такое невидимые символы?

Невидимые символы — это кодовые точки Unicode, которые не имеют видимого глифа, но всё ещё занимают место в строке и влияют на то, как программное обеспечение обрабатывает или отображает текст. Они включают управляющие символы (такие как табуляция и перевод строки), символы форматирования (такие как объединители нулевой ширины и метки направления), различные варианты пробелов и специальные маркеры, такие как метка порядка байтов (BOM). Поскольку они выглядят как ничто, их чрезвычайно сложно заметить в простом текстовом редакторе, и они являются частой причиной тонких ошибок, нарушенных макетов и ошибок обработки данных.

Описание инструмента

Средство просмотра невидимых символов — это интерактивный текстовый редактор, который отображает каждый невидимый символ как видимый символ прямо на месте. Вставьте или введите любой текст, и каждый скрытый символ сразу же заменяется небольшим символическим глифом — табуляции отображаются как , пробелы как ·, пробелы нулевой ширины как ·, метки направления как / , BOM как и так далее. При наведении курсора на любой глиф отображается подсказка с полным названием символа и его кодовой точкой Unicode. Ничего не покидает редактор; весь рендеринг происходит локально в вашем браузере.

Примеры

Входной текст (исходный) Что вы видите в средстве просмотра
Hello\u200BWorld (пробел нулевой ширины между словами) Hello·World с глифом ·, обозначающим U+200B
\u202Eright-to-left override →right-to-left override с глифом направления в начале
line one\r\nline two Глифы возврата каретки и перевода строки перед новой строкой
\uFEFFstart of file ▯start of file с BOM в позиции 0

Возможности

  • Встроенный рендеринг: Невидимые символы отображаются как глифы прямо в редакторе, а не в отдельной панели, поэтому вы видите их в контексте с окружающим текстом
  • Широкое покрытие символов: Обрабатывает управляющие символы C0 и C1, все именованные символы форматирования Unicode, варианты пробелов Unicode (пробел en, пробел em, волосяной пробел, узкий неразрывный пробел и т. д.), символы форматирования направления, селекторы вариантов, символы тегов и BOM
  • Подсказки: При наведении курсора на любой глиф отображается полное имя символа Unicode и его кодовая точка (например, Zero Width Space — U+200B)
  • Выделение стандартных пробелов: Обычные пробелы и табуляции выделяются с помощью встроенных маркеров пробелов CodeMirror, что делает их визуально отличными от обычного текста
  • Режим простого текста: Редактор остаётся в режиме простого текста, поэтому специальные символы никогда не переинтерпретируются и не изменяются при вводе

Варианты использования

  • Отладка артефактов копирования-вставки: Текст, скопированный из PDF-файлов, веб-страниц или текстовых процессоров, часто содержит пробелы нулевой ширины, мягкие дефисы или неразрывные пробелы, которые вызывают несоответствия при сравнении строк и поиске
  • Проверка файлов данных: Вставьте CSV, JSON или вывод журнала, чтобы найти неожиданные управляющие символы (нулевые байты, возвраты каретки, BOM) перед импортом данных в базу данных или парсер
  • Отладка веб-приложений и кода: Проверьте пользовательский ввод или ответы API на наличие скрытых меток направления или символов форматирования, которые могут нарушить отображение или вызвать проблемы безопасности

Как это работает

Инструмент использует CodeMirror 6 с пользовательским расширением, которое перебирает каждый символ в видимой области просмотра редактора. Для каждой кодовой точки он проверяет таблицу поиска известных невидимых символов, тестирует классы свойств Unicode \p{Cc} (управление) и \p{Cf} (формат) и обнаруживает селекторы вариантов и диапазоны символов тегов. Найденные символы заменяются встроенными виджетами украшения, отображающими соответствующий символ глифа. Обычные пробелы и табуляции делегируются встроенному расширению highlightWhitespace CodeMirror.