Инструменты

Скрытые символы

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

Очищенный текст

Здесь появится текст без скрытых символов

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

Почему одинаковые на вид строки могут различаться?

Программа сравнивает символы, а мы видим их изображения. Пробел нулевой ширины U+200B не занимает места, но остаётся частью строки: слово с ним и без него может по-разному участвовать в поиске, проверке имени или разборе адреса.

Такие знаки могут попасть в текст при копировании с сайта или из редактора. Их наличие само по себе не доказывает подмену. Проверка показывает конкретный символ и его место, чтобы было понятно, что изменится в очищенном тексте.

Почему нельзя просто удалить всё невидимое?

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

Поэтому части эмодзи остаются на месте: соединители и селекторы внутри последовательностей, которые знает Unicode, не трогаются. Остальные невидимые знаки, включая соединители в словах и метки направления, убираются: по самому знаку не понять, нужен ли он. Для текста на арабском, иврите или языке, где соединитель меняет начертание букв, очищенная копия может не подойти: сверьте её с исходником.

Что меняется при очистке?

Убираются невидимые и служебные знаки: пробелы нулевой ширины, мягкие переносы, метки направления, теги, селекторы вне эмодзи, диакритика без буквы, символы для личного использования и коды, которые в Unicode 17 ещё ничего не означают. Пробелы в конце строк тоже убираются, а переводы строк любого вида, например U+2028, становятся обычными.

Буквы-двойники заменяются. Если слово почти целиком написано одним алфавитом, похожая буква другого становится своей: латинская «o» в «Симoненко» превращается в кириллическую. В имени сайта похожие на латинские буквы становятся латинскими, если сама зона написана не их алфавитом: в «simоnеnkо.xyz» с кириллическими «о» и «е» получится настоящий адрес. Остальные пробелы, включая неразрывные, и буквы остаются как есть.

Управляющие символы вроде U+0007 и цепочки из десятков диакритических знаков на одной букве проверка сама не убирает: обычно они означают, что текст повредился по дороге, и решить, как его поправить, лучше вам. Пока они есть, результат не собирается.

Исходник не переписывается: копируется очищенный текст. Перед использованием проверьте важные адреса, имена и код: по составу символов можно заметить несоответствие, но нельзя восстановить намерение автора.

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

В Unicode порядок хранения символов и порядок их показа могут различаться. Обычно это нужно для арабского или иврита. Но управляющие знаки можно поместить в комментарий или строку программы так, что редактор покажет соседний код в обманчивом порядке, а компилятор прочитает сохранённую последовательность.

На этом основана атака Trojan Source, описанная как CVE-2021-42574. В результатах проверки управляющие знаки заменены видимыми подписями: так они не могут менять порядок показа текста. Это помогает при проверке исходника, но не заменяет разбор того, что делает программа.

Как невидимые знаки могут хранить сообщение?

Символам можно условиться присваивать значения и записать ими данные. Например, теги Unicode позволяют кодировать знаки ASCII, а последовательность селекторов начертания — байты. На экране такая запись может не занимать места, хотя остаётся в скопированной строке.

Проверка убирает такие цепочки из копии. Теги она показывает прямо в отметке, буквами ASCII: по стандарту каждый тег повторяет один такой знак. Селекторы остаются кодами: как из них сложить байты, договариваются те, кто их записал.

Можно ли так убрать водяные знаки или определить автора?

Только если метка записана теми символами, которые найдены и удалены. Есть и другой подход: SynthID Text отмечает сгенерированный текст через выбор его слов. Удаление невидимых знаков такую метку не уберёт.

Пустой список находок не доказывает отсутствия скрытых данных: они могут использовать допустимые символы и сочетания. Не доказывает проверка и авторство. Невидимые знаки бывают в тексте человека, а ответ нейросети может обходиться без них.

Где сохраняется текст?
Обработка идёт в браузере. Страница не отправляет введённый текст на сервер и не записывает его в адрес или хранилища браузера. При возврате кнопкой «Назад» браузер может восстановить страницу вместе с текстом.