← Blog

Почему пустой символ не работает: техническое объяснение

✓ Технические данные этой статьи сверяются с базой данных Юникода при каждой публикации сайта.

Вы скопировали пустой символ с какого-то сайта, вставили — отказ. А с другого сайта «такой же» символ прошёл. Дело не в везении: судьбу каждого невидимого знака решают три технических механизма, и разобраться в них можно за пять минут.

Механизм первый: автоматическая очистка

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

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

Механизм второй: категория символа

У каждого знака Юникода есть официальная категория: буква, цифра, символ, пробел, формат и так далее. Проверка полей часто фильтрует по этой категории. Поле ника с требованием «хотя бы одна буква» пропустит хангыль-заполнитель (категория «буква») и отвергнет пробел нулевой ширины (категория «формат»). Поле сообщения обычно мягче — поэтому знак, проваливший ник, может спокойно пройти в чате.

Именно поэтому наша библиотека делит 36 символов на три группы по назначению, а не сваливает их в один список: группа и есть прогноз поведения.

Механизм третий: лимит байтов

Под капотом длина текста меряется в байтах. Латинская буква занимает один байт, кириллическая — два, а почти каждый невидимый символ — три. Поле ника на двадцать байт с десятью латинскими буквами оставляет место лишь для трёх пустых знаков. Симптом узнаваем: имя выглядит коротким, а отклоняется «слишком длинное». Наши инструменты показывают счётчик байтов ровно из-за этого случая.

Как самому поставить диагноз

  1. Проверьте копию. Вставьте её в поле проверки: если невидимых символов ноль, проблема в источнике копии, а не в приложении.
  2. Сверьте категорию. Отказ в поле имени? Убедитесь, что взяли символ из группы для ников, а не типографский пробел.
  3. Посчитайте байты. Отказ «по длине» — уберите часть невидимых знаков или сократите видимую часть.
  4. Смените символ. Правила приложений меняются с обновлениями; если один знак перестали принимать, его сосед по группе обычно проходит.

Что нельзя починить со своей стороны

Иногда площадка решает фильтровать конкретный символ целиком — это её политика, и «волшебного» знака, который обходит её вечно, не существует. Мы обновляем сведения о поведении на страницах инструментов по сообщениям пользователей, а поле проверки всегда показывает истинное содержимое вашей копии. Зная три механизма выше, вы хотя бы точно видите, на каком шаге всё остановилось, — а это половина решения.