В этой статье
Вы скопировали пустой символ с какого-то сайта, вставили — отказ. А с другого сайта «такой же» символ прошёл. Дело не в везении: судьбу каждого невидимого знака решают три технических механизма, и разобраться в них можно за пять минут.
Механизм первый: автоматическая очистка
Почти каждое приложение «причёсывает» отправляемый текст: пробелы в начале и в конце удаляются, цепочки пробелов сжимаются. Очистка опирается на официальный список пробельных символов Юникода — а не на то, что выглядит пустым на экране. Обычный пробел, круглый, тонкий — все они в этом списке, и все исчезают.
Выживают знаки, которых нет в списке пробелов, хотя выглядят они так же: символы из группы букв вроде хангыль-заполнителя и знаки вроде пустого символа Брайля. Для чистильщика это законное содержимое.
Механизм второй: категория символа
У каждого знака Юникода есть официальная категория: буква, цифра, символ, пробел, формат и так далее. Проверка полей часто фильтрует по этой категории. Поле ника с требованием «хотя бы одна буква» пропустит хангыль-заполнитель (категория «буква») и отвергнет пробел нулевой ширины (категория «формат»). Поле сообщения обычно мягче — поэтому знак, проваливший ник, может спокойно пройти в чате.
Именно поэтому наша библиотека делит 36 символов на три группы по назначению, а не сваливает их в один список: группа и есть прогноз поведения.
Механизм третий: лимит байтов
Под капотом длина текста меряется в байтах. Латинская буква занимает один байт, кириллическая — два, а почти каждый невидимый символ — три. Поле ника на двадцать байт с десятью латинскими буквами оставляет место лишь для трёх пустых знаков. Симптом узнаваем: имя выглядит коротким, а отклоняется «слишком длинное». Наши инструменты показывают счётчик байтов ровно из-за этого случая.
Как самому поставить диагноз
- Проверьте копию. Вставьте её в поле проверки: если невидимых символов ноль, проблема в источнике копии, а не в приложении.
- Сверьте категорию. Отказ в поле имени? Убедитесь, что взяли символ из группы для ников, а не типографский пробел.
- Посчитайте байты. Отказ «по длине» — уберите часть невидимых знаков или сократите видимую часть.
- Смените символ. Правила приложений меняются с обновлениями; если один знак перестали принимать, его сосед по группе обычно проходит.
Что нельзя починить со своей стороны
Иногда площадка решает фильтровать конкретный символ целиком — это её политика, и «волшебного» знака, который обходит её вечно, не существует. Мы обновляем сведения о поведении на страницах инструментов по сообщениям пользователей, а поле проверки всегда показывает истинное содержимое вашей копии. Зная три механизма выше, вы хотя бы точно видите, на каком шаге всё остановилось, — а это половина решения.