Редакция
15.02.2013
Статьи

Сколько символов в 1 SMS-сообщении

У короткого SMS два привычных предела: 70 знаков для русского текста и 160 для базового набора GSM-7 с латинскими буквами. На телефоне длинный текст обычно выглядит как одно сообщение. Однако сервис отправляет его частями, и это нужно учитывать при расчёте рассылки.

Как только русский текст выходит за границу в 70 знаков, вместимость каждой части сокращается до 67. Для базового GSM-7 соответствующий предел составляет 153. Отсюда неочевидный результат: 71 знак требует двух частей, а 135 знаков уже трёх. Считать нужно весь текст вместе с пробелами, пунктуацией и переносами.

Сколько символов в одном и длинном SMS

Таблица показывает вместимость сообщения, а не требование заполнять каждую часть до конца. Например, две части вмещают до 134 обычных кириллических символов, но для текста из 80 символов тоже нужны две части.

Длина SMS, частей

Количество символов в SMS-сообщении, шт.

Латиница

Кириллица

1

160

70

2

306

134

3

459

201

4

612

268

5

765

335

6

918

402

7

1071

469

8

1224

536

Значения для латиницы рассчитаны без символов расширенной таблицы GSM-7. Для emoji подсчёт отличается: один значок на экране может занимать несколько единиц кодировки.

Проверить границы проще на конкретных числах:

  • Русский текст из 70 символов занимает одну часть. Добавьте ещё букву или пробел, и понадобятся две части.
  • 134 символа кириллицы помещаются в две части. При длине 135 символов нужны три.
  • 160 базовых символов GSM-7 помещаются в одну часть. Текст из 161 символа распределяется по двум: 153 в первой и 8 во второй.
  • 306 базовых символов GSM-7 занимают две части, а 307 уже три.

Почему для русского текста предел ниже

Причина в размере данных, а не в языке получателя. Под текст SMS выделено 140 байт, то есть 1120 бит. Для основной таблицы GSM-7 расчёт такой: 1120 / 7 = 160. Обычная русская буква требует 16 бит в Unicode, поэтому 1120 / 16 = 70.

Для сборки длинного текста телефону нужны номера частей и их общее количество. Эти данные передаются в служебном заголовке и занимают место, которое иначе досталось бы тексту. В результате каждая часть, даже первая, вмещает 153 базовых знака GSM-7 или 67 обычных русских букв.

Для текста длиннее одного сегмента можно разделить число единиц кодировки на 153 или 67 и округлить вверх. Для короткого текста сначала проверьте предел одной части: 160 или 70 соответственно. Одной формулы с делением на 67 недостаточно: она ошибочно посчитает текст из 68 русских букв как две части.

Что происходит при смешении латиницы и кириллицы

Кодировка относится ко всему сообщению. Если к английскому тексту добавить русскую букву, отправка потребует Unicode. Предел уменьшится и для остальных букв, даже если они латинские.

Например, текст из 100 латинских букв базового набора занимает одну часть. Если одну букву заменить кириллической, длина на экране останется прежней, но сообщение займёт две части.

Похожая ситуация возникает после копирования из текстового редактора. Типографские кавычки или нестандартный пробел могут изменить кодировку. Если число частей неожиданно выросло, проверьте знаки, которые добавил редактор, и сравните текст до и после вставки.

Как учитывать emoji и специальные символы

Латинский текст не всегда укладывается в правило "один знак равен одной единице". Знаки ^, {, }, [, ], \, ~, | и € входят в расширенную таблицу GSM-7. Для каждого нужны две позиции. Такой знак сокращает свободное место, хотя сам по себе не требует Unicode.

С emoji считайте единицы UTF-16, а не видимые картинки. Многие emoji занимают две единицы. Составной значок с модификатором цвета кожи или несколькими соединёнными элементами может занимать больше. Поэтому строка из 70 видимых знаков с emoji не обязательно поместится в одну часть.

При выборе текста для рассылки сначала оцените, нужна ли картинка получателю. Если она остаётся, проверьте число сегментов для полной строки. Простой счётчик букв этого не покажет.

Входит ли имя отправителя в длину текста

Имя в поле "От кого" передаётся отдельно. Его не нужно прибавлять к буквам сообщения. Но название компании, написанное внутри текста, занимает место наравне с другими словами.

Согласование имени и допустимые знаки относятся к требованиям отправителя. Проверяйте их отдельно от длины сообщения.

Как проверить доставку длинного сообщения

То, что текст помещается в несколько частей, ещё не подтверждает получение. После отправки проверьте статус в кабинете или через API. Статус доставки не означает, что человек прочитал сообщение. Если возникла ошибка, используйте разбор причин недоставки SMS.

Как проверить текст перед рассылкой

  1. Соберите сообщение целиком: с названием компании, ссылкой и данными получателя.
  2. Определите кодировку и посчитайте части. Проверьте emoji и знаки после копирования.
  3. Посмотрите вариант с самым длинным именем или другим подставляемым значением. Персонализация может изменить длину.
  4. Отправьте тестовый текст себе и проверьте, как он отображается.

При расчёте бюджета учитывайте части сообщения и действующие условия оператора, в том числе пакетную тарификацию. Для предварительной оценки откройте калькулятор стоимости рассылки. Он находится в верхней части страницы тарифов. Число сегментов готового текста проверьте отдельно, после добавления ссылок и подстановок.

Вопросы и ответы

Почему 71 символ на русском занимает две части?
Предел одной части составляет 70 обычных кириллических символов. Более длинный текст делится на части по 67 символов: остальное место занимает служебный заголовок. Поэтому для 71 символа нужны две части.
Считаются ли пробелы и переносы строк?
Да. Они входят в передаваемый текст. После вставки сообщения из редактора проверьте лишние пробелы и переносы: рядом с границей сегмента даже один добавленный знак может увеличить число частей.
Можно ли считать каждый emoji одним символом?
Для расчёта SMS такой способ не подходит. Видимый значок может состоять из нескольких единиц UTF-16. Проверяйте полную строку с выбранным emoji, особенно если в нём есть модификаторы или соединённые элементы.
Всегда ли две части стоят вдвое дороже одной?
При поштучной оплате и одинаковой цене сегмента две части учитываются как две отправки. При пакетной тарификации или отдельных условиях для типа сообщения расчёт зависит от правил оператора. Проверяйте и число частей, и тариф.
SMS
Поделиться
6502