Перейти к содержимому
Ghostchars

Нулевая ширина и невидимые

ZERO WIDTH SPACE (U+200B)

Пробел без ширины. Он занимает место в строке, отмечает точку, где допустим перенос, и не рисует ровно ничего.

Кодовая позиция
U+200B
Удаляется по умолчанию
Да
Управляющий параметр
Параметр не нужен
Может нести нагрузку
Нет

Откуда он берётся

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

Почему это важно

Unicode относит его к форматирующим символам, а не к пробельным, поэтому он переживает копирование, разрывает слово для проверки орфографии, ломает точный поиск и `grep`, а скрытому каналу даёт по биту на позицию. «привет» и «прив​ет» выглядят одинаково и не равны друг другу.

До и после

ДопривU+200Bет
Послепривет

Две строки, которые выглядят одинаково. Поиску по слову «привет» отвечает только вторая.

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

Когда он уместен

Только как подсказка о переносе там, где строка иначе вылезет за край: длинная ссылка, абзац на китайском. Русской или латинской прозе он не нужен, а в HTML для той же работы есть `<wbr>`.

Как его удалить

Его удаляет базовый проход. Включать нечего, и нет ни одного случая, когда Ghostchars оставил бы его на месте.

Это водяной знак ИИ?

Используется для сокрытия данных — но не водяной знак

Нет. U+200B — не водяной знак, и ни одна крупная модель не помечает им свой вывод. Это классический носитель для самодельной скрытой нагрузки, так что его присутствие говорит, что текст через что-то прошёл — CMS, редактор, стеганографическую утилиту, — но не о том, кто его написал.

Известный носитель намеренно спрятанных данных. Кто-то поместил его туда специально, а это уже другой вопрос, чем то, кто написал слова.

Вопросы

Виден ли пробел нулевой ширины хоть в каком-нибудь редакторе?

При обычном отображении — нет: у него нет ни глифа, ни ширины. Он проявляется только в hex-редакторе, в редакторе с включённым показом невидимых символов или в инструменте вроде этого.

Не испортит ли текст его удаление?

Нет. Удаление U+200B может только убрать возможность переноса строки. Оно никогда не меняет ни слова, ни пробела, ни одного видимого символа.

Проверьте свой текст

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

Проверьте свой текстВсе символы