Нулевая ширина и невидимые
ZERO WIDTH SPACE (U+200B)
Пробел без ширины. Он занимает место в строке, отмечает точку, где допустим перенос, и не рисует ровно ничего.
- Кодовая позиция
U+200B- Другие записи
u200b\u200b​- Категория
- Нулевая ширина и невидимые
- Удаляется по умолчанию
- Да
- Управляющий параметр
- Параметр не нужен
- Может нести нагрузку
- Нет
Скопировать и вставить U+200B
Чтобы скопировать и вставить ZERO WIDTH SPACE (U+200B), нажмите кнопку: в буфер обмена попадёт сам символ, а Ctrl+V (Cmd+V на Mac) вставит его в любое место, где можно печатать.
Откуда он берётся
Системы управления контентом и текстовые редакторы вставляют его, чтобы длинная ссылка или сплошной поток иероглифов могли перенестись на новую строку. Он же приезжает вместе с текстом, скопированным с веб-страницы, из шаблонизаторов, которые ставят его между тегами, и из инструментов, которые прячут данные намеренно: это самый частый носитель в стеганографии на символах нулевой ширины.
Почему это важно
Unicode относит его к форматирующим символам, а не к пробельным, поэтому он переживает копирование, разрывает слово для проверки орфографии, ломает точный поиск и `grep`, а скрытому каналу даёт по биту на позицию. «привет» и «привет» выглядят одинаково и не равны друг другу.
До и после
Две строки, которые выглядят одинаково. Поиску по слову «привет» отвечает только вторая.
Символ показан подписанной плашкой, чтобы было видно, где он стоит. В вашем тексте он не рисует ровно ничего.
Когда он уместен
Только как подсказка о переносе там, где строка иначе вылезет за край: длинная ссылка, абзац на китайском. Русской или латинской прозе он не нужен, а в HTML для той же работы есть `<wbr>`.
Как его удалить
Его удаляет базовый проход. Включать нечего, и нет ни одного случая, когда Ghostchars оставил бы его на месте.
Текст лежит в файле, а не в буфере обмена? Отчёт по документу для .docx, .odt и .html находит символ внутри файла вместе со скрытыми фрагментами и исправлениями, и открывать файл для этого не нужно. Если вопрос в том, что делает остальной текст, а не этот один символ, можно измерить разброс длины предложений и увидеть, где проявляется каждая привычка: без баллов и без утверждений о том, кто написал текст.
Это водяной знак ИИ?
Используется для сокрытия данных, но не водяной знак
Нет. U+200B водяным знаком не является, и ни одна крупная модель не помечает им свой вывод. Это классический носитель для самодельной скрытой нагрузки, так что его присутствие говорит, что текст через что-то прошёл (CMS, редактор, стеганографическую утилиту), но не о том, кто его написал.
Известный носитель намеренно спрятанных данных. Кто-то поместил его туда специально, а это уже другой вопрос, чем то, кто написал слова.
Вопросы
Виден ли пробел нулевой ширины хоть в каком-нибудь редакторе?
При обычном отображении не виден: у него нет ни глифа, ни ширины. Он проявляется только в hex-редакторе, в редакторе с включённым показом невидимых символов или в инструменте вроде этого.
Не испортит ли текст его удаление?
Нет. Удаление U+200B может только убрать возможность переноса строки. Оно никогда не меняет ни слова, ни пробела, ни одного видимого символа.
Почему поиск не находит слово, внутри которого он стоит?
Поиск сравнивает кодовые позиции. Пробел нулевой ширины между двумя буквами делает слово другой строкой, не той, что вы набрали, поэтому точное совпадение, запросы к базе и `grep` его пропускают.
Проверьте свой текст
Вставьте что угодно в инструмент очистки, чтобы увидеть каждый скрытый символ: позицию, кодовую позицию и то, что произойдёт с каждым из них. Ничего никуда не отправляется.
Проверьте свой текстКак убрать водяной знак ИИ из своего текстаОчищать в Chrome прямо при вставкеОчищать на Mac одной комбинацией клавишВсе символы