← Назад к блогу
Руководство

Лимит символов SMS: GSM-7, Unicode и сегменты

Лимиты символов SMS: GSM-7, Unicode и сегменты сообщений

Краткий ответ: Одна SMS несёт 160 символов в кодировке GSM-7 или 70 символов в Unicode (UCS-2). Более длинные тексты делятся на сегменты по 153 или 67 символов соответственно — и оплачиваются посегментно. Один эмодзи или типографская кавычка переключает всё сообщение в Unicode, срезая ёмкость на 56% и нередко утраивая стоимость. Кириллица всегда идёт в Unicode: 70 символов в одиночной SMS, 67 — в сегменте составной.

Лимиты символов кажутся мелочью, пока не умножишь их на миллион сообщений. Кампания, незаметно переехавшая с одного сегмента на два, удваивает бюджет. Вот как именно устроена арифметика кодировок — и как держать её под контролем.

Почему лимит SMS — 160 символов?

SMS передаётся в свободной ёмкости сигнальных кадров GSM: 140 байт (1120 бит) на сообщение. Сколько символов поместится в 1120 бит, зависит только от того, сколько бит нужно каждому символу:

КодировкаБит на символОдиночная SMSНа сегмент (составная)
GSM-77160153
UCS-2 (Unicode)167067

GSM-7 укладывает символ в 7 бит, поддерживая лишь фиксированный алфавит из 128 символов (плюс таблица расширения). UCS-2 поддерживает практически любую письменность и символ, но по 16 бит на символ — отсюда падение со 160 до 70.

Какие символы входят в алфавит GSM-7?

GSM-7 покрывает:

  • Латинские буквы A–Z, a–z и цифры 0–9
  • Обычную пунктуацию: . , ! ? : ; ' " ( ) + - * / = % & # @
  • Набор букв с диакритикой (é, ü, ñ, à, ö и другие) и греческие заглавные
  • Знаки валют, включая евро и фунт

Ловушка таблицы расширения: несколько символов — квадратные и фигурные скобки, обратный слеш, циркумфлекс, вертикальная черта, тильда и знак евро — входят в GSM-7, но стоят по два символа каждый, потому что кодируются как escape плюс код.

Что незаметно переключает сообщение в Unicode?

Всё, что вне GSM-7, переводит всё сообщение в UCS-2 — достаточно одного символа. Обычные виновники:

  • Типографская пунктуация, вставленная из Word или Google Docs: фигурные кавычки, фигурные апострофы, длинные тире, многоточие одним символом
  • Эмодзи — любые
  • Нелатинские письменности: кириллица, китайский, японский, корейский, арабский, иврит, тайский
  • Невидимые символы: неразрывные пробелы, соединители нулевой ширины из копипасты

Самый коварный случай — фигурный апостроф: внешне почти неотличим от прямого ASCII, но превращает сообщение в 160 символов в Unicode-отправку из 3 сегментов.

Как работает склейка сообщений?

Когда сообщение превышает лимит, оно делится на части, каждая с заголовком данных пользователя (UDH) — 6 байт, сообщающих телефону «это часть 2 из 3». Заголовок съедает полезную нагрузку, поэтому ёмкость сегмента падает:

Длина сообщения (GSM-7)СегментовОплачивается сообщений
1–160 символов11
161–306 символов22
307–459 символов33
460–612 символов44

Для Unicode пороги — 70, затем 134, 201, 268. Телефон собирает части в один пузырёк — пользователь никогда не видит разбиения, а вот ваш счёт видит: каждый сегмент тарифицируется как полное сообщение.

Сколько на самом деле стоят ошибки кодировки?

Возьмём промосообщение в 155 символов на 500 000 получателей по 0,01 $ за сегмент:

  • Чистый GSM-7: 1 сегмент × 500 000 = 5 000 $
  • Тот же текст с одним эмодзи: Unicode-сегменты по 70 символов → 3 сегмента × 500 000 = 15 000 $

Один символ — разница в 10 000 долларов. Это самая частая тихая утечка бюджета в SMS-маркетинге, и она полностью предотвратима.

Как удерживать сообщения в одном сегменте? (6 правил)

  1. Знайте свой реальный лимит. 160 для GSM-7, 70 для Unicode. Если аудитории нужна кириллица или другая нелатинская письменность, планируйте тексты от 70/67 с самого начала.
  2. Убирайте типографскую пунктуацию. Нормализуйте кавычки, апострофы и тире в ASCII перед отправкой. Автоматизируйте это в пайплайне — люди вставляют из Word.
  3. Относитесь к эмодзи как к платной опции. В маркетинге они могут окупиться вовлечённостью; в OTP и оповещениях — чистый расход.
  4. Следите за таблицей расширения. Скобки, тильда, циркумфлекс, вертикальная черта и знак евро считаются в GSM-7 за два символа.
  5. Проверяйте число сегментов в ответе API. Хорошие провайдеры возвращают кодировку и число сегментов по каждому сообщению — настройте оповещение, если счётчик шаблона изменился.
  6. Осторожнее с URL и персонализацией. Длинная ссылка или неожиданно длинное имя могут вытолкнуть пограничный шаблон в следующий сегмент. Оставляйте запас 10–15 символов.

Относится ли это к RCS и WhatsApp?

Нет — RCS, WhatsApp и другие IP-каналы не используют GSM-кодировки и 140-байтовые кадры: нет ни лимита в 160 символов, ни посегментной тарификации. Но каждой RCS-кампании нужен SMS-фолбэк, и этот резервный текст подчиняется всем правилам из этого руководства.

API ViteMobile возвращает кодировку и число сегментов для каждого сообщения, а панель управления помечает шаблоны с дрейфующим числом сегментов — чтобы вставленная фигурная кавычка была поймана до того, как размножится на миллион отправок.

Ключевые выводы

  • Одна SMS = 140 байт: 160 символов GSM-7 или 70 Unicode. Сегменты составных сообщений вмещают 153/67.
  • Один не-GSM-символ — эмодзи, фигурная кавычка — переводит всё сообщение в Unicode и может утроить стоимость.
  • Некоторые символы GSM-7 (скобки, евро, тильда) молча считаются за два.
  • Нормализуйте пунктуацию автоматически, оставляйте запас под персонализацию и следите за числом сегментов по каждому шаблону в продакшене.

Часто задаваемые вопросы

В: Сколько символов помещается в одну SMS? О: 160 в GSM-7, 70 в Unicode. Более длинные сообщения делятся на сегменты по 153 (GSM-7) или 67 (Unicode), каждый оплачивается как отдельное сообщение. Кириллица — всегда по 70/67.

В: Почему моя SMS разбилась на несколько сообщений? О: Она превысила лимит, или спецсимвол перевёл её в Unicode. Заголовки склейки уменьшают каждую часть до 153/67 символов, и каждая часть оплачивается отдельно.

В: Эмодзи считаются за несколько символов? О: Да — любой эмодзи переводит всё сообщение в Unicode (лимит 70), и большинство эмодзи сами занимают две кодовые единицы. Один эмодзи может превратить 1 сегмент в 3.

В: Какие символы ломают GSM-7? О: Фигурные кавычки и апострофы, длинные тире, многоточие одним символом, неразрывные пробелы и любая нелатинская письменность. Скобки и знак евро остаются в GSM-7, но считаются за два.

В: Как удержать SMS в одном сегменте? О: Считайте по правильному лимиту, автоматически нормализуйте типографику в ASCII, избегайте эмодзи в транзакционных текстах, оставляйте запас под персонализацию и следите за числом сегментов в ответе API.