Символы с пробелами и без: какой счёт использует форма
Форма, портал с резюме, SMS или пост в соцсети считают символы одним из двух способов: с пробелами или без них. Сначала посмотрите подпись к полю или текст подсказки, там обычно написано, какой способ используется. Если там ничего нет, ориентируйтесь на более строгий подсчёт, обычно это подсчёт без пробелов. Эмодзи и некоторые буквы с диакритикой тоже могут считаться как несколько символов в системах, которые измеряют текст в единицах кода или в байтах, поэтому один и тот же текст может пройти в одном счётчике и не пройти в другом. Считайте текст инструментом, который работает по тому же правилу, что и форма.
Счётчик словТекст превышает лимит?Сделать бесплатноС пробелами или без них
- С пробелами считает каждый набранный символ, включая каждый пробел, как один символ.
- Без пробелов перед подсчётом удаляет все пробельные символы, поэтому слова сливаются. Показатель «без пробелов» в счётчике слов удаляет все пробельные символы, включая переносы строк, табуляции и неразрывные пробелы, а затем считает оставшееся.
В фразе «Hello world» 11 символов с пробелом и 10 без него. Если поле просит символы без пробелов, нужно второе число.
Почему один эмодзи может считаться как два
У текста есть две меры длины. Первая та, которую видит человек: это графемный кластер, то есть один видимый символ, даже если его образуют несколько кодовых точек. Вторая та, которую хранит компьютер. Длина строки в JavaScript и во многих старых системах считается в единицах кода UTF-16. Большинство букв занимают одну единицу, а символы за пределами Basic Multilingual Plane, в том числе многие эмодзи, занимают две. Эмодзи «палец вверх», U+1F44D, выглядит как один символ, но в UTF-16 это две единицы, поэтому счётчик, который считает единицы кода, покажет 2.
Счётчик слов здесь считает видимые символы, поэтому эмодзи «палец вверх» равен 1. Семейный эмодзи тоже равен 1, хотя он состоит из нескольких кодовых точек, соединённых нулевыми соединителями. Форма, которая считает единицы кода, покажет больше, и разница растёт с каждым эмодзи в тексте.
Буквы с диакритикой
Букву é можно сохранить двумя способами. Как одну кодовую точку, U+00E9, она везде занимает одну единицу. Как букву e и следующий за ней комбинируемый акут, U+0301, это две кодовые точки и две единицы. На экране оба варианта выглядят одинаково. Счётчик, который считает кодовые точки или единицы, покажет 2 для второго варианта, а счётчик слов покажет 1 для обоих.
Ограничения по байтам добавляют ещё одно различие. В UTF-8 é занимает два байта, а большинство эмодзи занимают четыре. Поле с ограничением по байтам может вместить меньше букв с диакритикой или эмодзи, чем предполагает число символов. Счётчик слов байты не показывает, поэтому оцените их отдельно.
Переносы строк и скрытые символы
В текстовом поле перенос строки — это один символ. Многие системы сохраняют перенос строки в Windows как два символа: возврат каретки и перевод строки. Отправка веб-форм передаёт переносы строк в таком же виде. Поэтому подсчёт на сервере может дать больше, чем видно в поле, на один символ за каждый перенос строки. Считайте текст в том виде, в каком он будет отправлен, а не только в том, в каком вы его набрали.
Пробелы нулевой ширины ведут себя иначе. Подсчёт без пробелов не считает их пробельными символами, поэтому они остаются в результате и завышают его. Сначала удалите скрытые символы. Этот инструмент сохраняет табуляции и переносы строк и заменяет неразрывные пробелы обычными пробелами, которые потом удаляет подсчёт без пробелов. Руководство по скрытым символам объясняет, откуда они берутся.
Один текст, пять подсчётов
Возьмём слово «Café», пробел и эмодзи «палец вверх», U+1F44D, при этом é сохранена как одна кодовая точка. Разные меры дают разные итоги:
| Мера | Количество |
|---|---|
| Видимые символы, с пробелами (счётчик слов) | 6 |
| Кодовые точки | 6 |
| Единицы кода UTF-16 (длина в JavaScript) | 7 |
| Байты UTF-8 | 10 |
| Видимые символы, без пробелов (счётчик слов) | 5 |
Каждый итог верен для своей меры. Какая мера считается, решает форма, поэтому важнее знать правило, а не какое-то одно число.
Порядок действий
- Прочитайте правило: символы, байты или слова, и учитываются ли пробелы.
- Очистите текст с помощью удаления скрытых символов, чтобы невидимые символы не завышали счёт.
- Вставьте текст в счётчик слов и посмотрите символы и символы без пробелов. Строки с ограничениями показывают распространённые лимиты, но ориентироваться нужно на то число, которое считает форма.
- Если форма считает байты, оцените их отдельно, как описано выше.
- Если форма показывает собственный счётчик в реальном времени, доверяйте её числу, а этим инструментом выясните, почему ваш результат отличается.
- Если правило всё ещё неясно, оставьте запас. Ограничения по количеству слов разбирают тот же вопрос для слов и правил платформ.
Частные случаи
- Правило платформы важнее. Если у платформы есть собственный счётчик, ориентируйтесь на его число, а не на общее.
- Пробелы в конце. Форма может обрезать пробелы в конце поля, а может и не обрезать. Один лишний пробел в конце способен изменить счёт на единицу.
- Скопированный текст. Текст, скопированный со страницы сайта, может содержать неразрывные пробелы и невидимые символы. Очистите его с помощью удаления скрытых символов перед подсчётом.
Переведено с помощью ИИ с Английский оригинал.
Комментарии
Комментариев пока нет. Будьте первым.


