Обнаружитель невидимых символов

Вставьте любой текст, детектор сообщит обо всех невидимых символах, которые в нём есть: пробелах нулевой ширины, направляющих метках, BOM, мягких переносах, неразрывных пробелах и наборе управляющих кодовых точек Unicode, которые выглядят как пустота, но ломают поиск, сравнение (diff) и копирование-вставку. Каждое совпадение сопровождается кодовой точкой (U+200B), официальным именем Unicode и позицией в строке, чтобы вы могли точно определить, где прячется загадочная ошибка, прежде чем её удалить.

Как обнаружить невидимые символы

  1. 1

    Вставьте текст

    Введите подозрительный строковый фрагмент, фрагмент кода, скопированное сообщение или значение конфигурации.

  2. 2

    Проведите сканирование

    Инструмент проходит по каждому кодовому символу и выделяет все, соответствующие списку невидимых или форматируемых символов.

  3. 3

    Прочитайте отчёт

    Каждое совпадение показывает свою позицию (нумерация с 1), кодовую точку в формате `U+HHHH` и имя Unicode (например, пробел нулевой ширины, BOM и т. д.).

  4. 4

    Очистить текст

    Используйте действие «Заменить», чтобы удалить или отобразить скрытые символы, а затем вставьте очищенную версию.

Незаметные символы и их происхождение

Эти символы существуют по законным причинам, для оформления текста, определения направления написания или объединения символов. Однако они превращаются в ошибки, когда выходят из контекста, для которого были разработаны, и попадают в код, конфигурационные файлы, запросы поиска или имена пользователей.

Символы, которые ищет детектор

Кодовая точка Название Где обычно проникает
U+200B Пробел нулевой ширины Редакторы форматированного текста, текстовые процессоры
U+200C Несоединитель нулевой ширины Персидская и хинди типографика
U+200D Соединитель нулевой ширины Последовательности эмодзи, индийские письменности
U+200E Метка «слева направо» Текст, содержащий и LTR-, и RTL-письменности
U+200F Метка «справа налево» То же самое
U+202A..E Встраивание / переопределение То же самое; иногда применяется злонамеренно (Trojan Source)
U+2028 Разделитель строк Скопирован из Word, ломает кодировщики JSON
U+2029 Разделитель абзацев То же самое
U+FEFF Метка порядка байтов Файлы, сохранённые в Notepad как UTF-8 с BOM
U+00A0 Неразрывный пробел Типографский пробел из Word
U+00AD Мягкий перенос Подсказки переноса слов в форматированном тексте

Частые признаки ошибки из-за скрытого символа

  • Сравнение строк, которые «должны» быть равны, даёт неравенство. Скопируйте значения в этот инструмент и сверьте число байтов.
  • Регулярное выражение, которое совпадает на глаз, но даёт сбой в коде. Часто это U+00A0, маскирующийся под пробел.
  • Парсер JSON падает на вставленной полезной нагрузке. Обычно это BOM в начале или U+2028 внутри строкового литерала, который JavaScript отклоняет внутри JSON.
  • Заголовок для SEO имеет неверную длину. Пробел нулевой ширины выводит вас за лимит без единого видимого изменения.

Аспект Trojan Source

Двунаправленные символы переопределения (U+202E, U+2066..U+2069) могут отображать исходный код в одном порядке, а компилировать в другом, это класс атак «Trojan Source». Если вы проверяете код от ненадёжных участников, прогоните их diff-ы через этот детектор перед слиянием.

Часто задаваемые вопросы

Notepad и некоторые более ранние инструменты Windows по умолчанию используют формат «UTF-8 с BOM». Файл BOM (U+FEFF) подходит для приложений для Windows, однако он несовместим со многими шелл-пайплайнами, файлами PHP (в таких файлах BOM выводится в виде предыдущего кода перед тегом <?php) и парсерами JSON.

На экране он выглядит как обычный пробел, но ведёт себя иначе: он не допускает переноса строки и не распознаётся большинством вариантов регулярного выражения \s во всех языках. Часто он оказывается в путях к файлам, адресах электронной почты и именах пользователей, скопированных из источников с форматированным текстом.

Не всегда. В текстах на арабском, персидском или деванагарском языках элементы соединения с нулевой шириной и элементы без соединения являются семантически обязательными. В коде, конфигурационных файлах и большинстве текстов на английском языке их можно удалить без проблем. Для контента естественного языка рекомендуется использовать специальный детектор для проверки перед удалением.

Нет, анализ выполняется только для текущего запроса, и ничего из вставленного не сохраняется или фиксируется после формирования ответа.

Сопутствующие инструменты

Генератор названий городов

Создавайте вымышленные названия городов, посёлков, деревень и столиц для миростроения, карт, игр, историй и тестовых данных с короткими заметками к каждому результату.

Символы стрелок для копирования

Копируйте популярные Unicode-стрелки одним щелчком: прямые, двойные, диагональные, крючковые, круговые и треугольные для документов, чатов и дизайна.

Символ «меньше или равно»

Копируйте знак ≤ и связанные математические символы сравнения. Включает Unicode, HTML-сущности и разметку LaTeX для электронных таблиц, научных работ и веб-страниц.

Преобразователь текста для людей с дислексией

Переформатируйте вставленный текст в короткие абзацы и строки примерно по 72 символа для более лёгкого чтения. Скопируйте результат в любой документ, письмо или редактор.

Генератор имен персонажей

Создавайте имена персонажей для романов, игр и ролевых игр. Выберите фэнтези, научную фантастику или современный стиль, задайте от 5 до 30 имен и получите готовые варианты сразу.

Генератор глитч-текста

Создавайте глитч-текст в стиле Zalgo с помощью комбинируемых знаков Unicode. Выберите интенсивность, посмотрите варианты и скопируйте искаженный текст для профиля, мема или хоррор-поста.

Инструмент доступен на других языках