# Кодирование и сегментация SMS-сообщений: GSM-7, Unicode (UCS-2) и многокомпонентные сообщения

> SMS-сообщение содержит 140 байт: 160 символов GSM-7 или всего 70 в Unicode (UCS-2). Кодировка, UDH и сегментация определяют ограничение количества символов в SMS-сообщении и его стоимость.

- Канонический URL: https://www.broadnet.me/ru/blog/sms-encoding-segmentation-gsm7-ucs2
- Язык: ru
- Последнее обновление: 2026-10-20
- Издатель: BroadNet (https://www.broadnet.me)

- Опубликовано: 2026-08-03
- Автор: BroadNet Editorial Team

Ограничение на количество символов в SMS-сообщениях полностью зависит от кодировки. Каждое SMS-сообщение содержит фиксированный объем данных в 140 байт, поэтому сообщение, использующее стандартный алфавит GSM-7, вмещает 160 символов, в то время как сообщение, содержащее любой символ, не входящий в GSM-7 — эмодзи, арабскую букву, фигурную цитату — переключается на 16-битный UCS-2 и вмещает только 70 символов. Более длинный текст разбивается на сегменты, за которые взимается отдельная плата.

> Хотите узнать параметры конкретного сообщения? Вставьте его в [калькулятор сегментов SMS](https://www.broadnet.me/tools/sms-segment-calculator), чтобы увидеть кодировку, количество сегментов и лимит символов, или проверьте, какие именно символы принудительно используют Unicode, с помощью [проверки GSM-7 / Unicode](https://www.broadnet.me/tools/gsm7-unicode-checker).

## Всё происходит из 140 байтов.

Тело SMS-сообщения — поле, которое 3GPP называет TP-User-Data — ограничено 140 октетами, или 1120 битами. Это единственное ограничение определяет количество символов, которое вы когда-либо увидите в цитатах. Количество символов, помещающихся в сообщение, просто равно 1120, деленному на количество бит, потребляемых каждым символом, поэтому единственный реальный вопрос заключается в том, какая кодировка используется для вашего текста. На практике важны две кодировки: GSM-7 и UCS-2.

## GSM-7 против UCS-2: два способа упаковки одних и тех же 140 байт.

### GSM-7: 7-битный алфавит по умолчанию

GSM-7 — это стандартный алфавит SMS, определенный в 3GPP TS 23.038. Он кодирует каждый символ в 7 битах, поэтому 1120 бит содержат 160 символов — классический предел для одного SMS-сообщения. Его таблица охватывает латинские буквы, цифры, распространенные знаки препинания и несколько символов. Важно отметить, что небольшой набор символов находится в базовом расширении набора символов, и каждый из них стоит два септета, поскольку он кодируется как управляющий байт, за которым следует символ. Этими символами являются ^ { } \ [ ] ~ | и знак евро €. Таким образом, сообщение, дополненное знаками евро, вмещает только 80 символов в одном SMS-сообщении, а не 160.

Перед отправкой вы можете точно определить, какие символы в вашем тексте входят в алфавит, являются расширенными или выходят за его пределы, используя [проверку GSM-7 / Unicode](https://www.broadnet.me/tools/gsm7-unicode-checker).

### UCS-2: 16-битный Unicode

Если текст содержит хотя бы один символ, который GSM-7 не может представить, всё сообщение перекодируется в UCS-2, 16-битную кодировку Unicode с фиксированной шириной. При 16 битах на символ, 1120 бит вмещают всего 70 символов. Частичного обновления и смешивания не происходит: один символ, не входящий в алфавит, уменьшает ваш бюджет вдвое, со 160 до 70. Это не ошибка — SMS-сообщение объявляет одну кодировку для всего своего тела, поэтому отправитель должен выбрать ту, которая может представить каждый присутствующий символ.

## Ограничения по количеству символов, рядом друг с другом.

| Кодирование | Битов на символ | Одно SMS | По сегментам (многокомпонентные) |
|---|---|---|---|
| GSM-7 (алфавит по умолчанию) | 7 | 160 | 153 |
| UCS-2 (16-битный Unicode) | 16 | 70 | 67 |

Показатели на сегмент ниже, чем ограничения для отдельных сообщений, поскольку в объединенном сообщении часть из 140 байт тратится на заголовок, который будет рассмотрен далее. Обратите внимание, что дополнительные символы, указанные выше, также занимают две позиции GSM-7 внутри сегмента, поэтому сегмент, состоящий из квадратных скобок или знаков евро, содержит гораздо меньше 153 видимых символов.

## Как работает многокомпонентное (собранное) SMS-сообщение

Текст, превышающий длину одного сообщения, не обрезается — отправляющий SMSC разбивает его на сегменты, каждый из которых представляет собой самостоятельное SMS-сообщение, а принимающий телефонный аппарат объединяет их обратно перед отображением. Координация осуществляется с помощью заголовка пользовательских данных (UDH), расположенного в начале полезной нагрузки каждого сегмента, определенного в 3GPP TS 23.040. Для стандартной конкатенации UDH имеет размер 6 байт и содержит ссылочный номер, общий для каждой части, общее количество частей и порядковый номер этой части, чтобы телефонный аппарат мог собрать их в правильном порядке.

```
UDH для объединенного SMS = 6 байт

05 00 03 RR TT SS

| | | | | |

| | | | | +- порядковый номер этой части (1..TT)

| | | | +---- общее количество частей (TT)

| | | +------- номер ссылки (одинаковый для каждой части)

| | +---------- длина этого информационного элемента = 3

| +------------- IEI = 00 (объединенный SMS, 8-битная ссылка)

+---------------- Длина UDH = 05 (следуют еще 5 байт)
```

Эти 6 байтов извлекаются из того же 140-байтового полезного содержимого, оставляя 134 байта для текста. Именно поэтому многокомпонентное сообщение содержит 153 символа GSM-7 на сегмент (заголовок выровнен по септетам, занимая семь из 160 позиций) и 67 символов UCS-2 на сегмент (134 байта ÷ 2). Некоторые платформы используют 7-байтовый UDH с 16-битным номером ссылки, что снижает эти значения до 152 и 66. [Калькулятор сегментов SMS](https://www.broadnet.me/tools/sms-segment-calculator) показывает точное распределение для любой длины сообщения.

## Почему один смайлик или один арабский символ меняет всё

Вот тут отправителей ждет сюрприз. Поскольку один символ, не соответствующий стандарту GSM-7, заставляет все сообщение быть преобразованным в UCS-2, 150-символьное уведомление на английском языке, которое обычно помещается в один сегмент, может незаметно сократиться до 70 символов и разделиться на три сегмента в тот момент, когда кто-то вставляет эмодзи или «умную» фигурную цитату из текстового редактора. Видимое количество символов не изменилось; изменилось кодирование.

Для отправителей, работающих на арабском рынке, это не исключение, а стандартная ситуация. Арабский алфавит не входит в алфавит GSM-7, поэтому каждое SMS-сообщение на арабском языке начинается с UCS-2: 70 символов в одном сообщении, 67 символов в каждом последующем сегменте. Двуязычное сообщение на арабском и английском языках или фирменный OTP-код на арабском языке быстро переходит в несколько сегментов. Командам, отправляющим сообщения в странах Персидского залива, Саудовской Аравии, ОАЭ и Египте, следует с самого начала закладывать в бюджет каждый шаблон сообщения на арабском языке единицы UCS-2, а не GSM-7.

Распространенные символы, которые незаметно заставляют передавать все сообщение в UCS-2:

- Любые эмодзи, включая одиночный завершающий символ 😀 в маркетинговых сообщениях.
- Арабский, иврит, кириллица, греческий, китайский и другие нелатинские алфавиты.
- Фигурные кавычки и апострофы (« ‘ “ ») скопированы из текстовых редакторов.
- Тире (– —), многоточие (…) и неразрывный пробел.
- Много латинских букв с диакритическими знаками, отсутствующих в таблице GSM-7.

## Во сколько вам обходится сегментация

Каждый сегмент оценивается и оплачивается как отдельное сообщение. Уведомление GSM-7 длиной в 160 символов — это одно платное SMS-сообщение; добавьте один символ, и оно превратится в два сегмента — до 306 символов — оплачиваемых как два отдельных сообщения. Арабский OTP-код длиной всего в 75 символов уже представляет собой два сегмента UCS-2, а значит, и два сообщения, хотя и выглядит коротким. При масштабах OTP-кодов и кампаний контроль за кодированием является прямой статьей расходов, а не просто косметической деталью.

1. Храните шаблоны транзакций в пределах одного сегмента — 160 GSM-7 или 70 UCS-2 — там, где это позволяет язык программирования.
2. Удаляйте ненужные символы Юникода: нормализуйте фигурные кавычки, тире и неразрывные пробелы до их эквивалентов GSM-7 перед отправкой.
3. Проверяйте кодировку и количество сегментов во время сборки, а не после выставления счета, используя средство проверки в конвейере отправки.
4. Бюджетные шаблоны арабского языка и другие нелатинские шаблоны в единицах UCS-2 (70/67) с самого начала.
5. Удаляйте переменное содержимое — URL-адреса, длинные названия продавцов — которое может привести к выходу сообщения за пределы сегмента во время выполнения.

> API для SMS-сообщений от BroadNet сообщает о разрешенной кодировке и количестве сегментов каждого сообщения перед его отправкой и в каждом подтверждении доставки, поэтому вы можете видеть и контролировать сегментацию в рабочей среде, а не обнаруживать ее в счете. Полная информация о запросах и ответах содержится в документации для разработчиков.

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

### Сколько символов в одном SMS-сообщении?

Одно SMS-сообщение содержит 140 байт полезной нагрузки. Используется стандартный алфавит GSM-7, состоящий из 160 символов; если текст содержит какой-либо символ, выходящий за рамки GSM-7 — эмодзи, букву с диакритическим знаком или арабскую букву, фигурную кавычку — сообщение переключается на кодировку UCS-2 и содержит 70 символов. Более длинный текст разбивается на объединенные сегменты по 153 (GSM-7) или 67 (UCS-2) символов каждый.

### Почему мое SMS-сообщение учитывается только как 70 символов?

Поскольку в тексте отсутствует часть алфавита GSM-7, всё сообщение было перекодировано в 16-битный UCS-2, который вмещает всего 70 символов. Обычно это эмодзи, нелатинские символы, фигурные кавычки, тире или неразрывные пробелы, скопированные из текстового редактора. Замена или удаление этого символа возвращает сообщение к 160 символам, предусмотренным стандартом GSM-7.

### Что такое кодирование UCS-2 в SMS?

UCS-2 — это 16-битная кодировка Unicode фиксированной ширины, используемая SMS-сообщениями, когда текст не может быть представлен 7-битным алфавитом GSM-7. Два байта на символ означают, что полезная нагрузка размером 140 байт содержит 70 символов в одном сообщении или 67 символов в сегменте многокомпонентного сообщения. Любой арабский текст, эмодзи или другой символ, не относящийся к GSM-7, в теле сообщения заставляет все SMS-сообщение быть преобразовано в UCS-2.

### Почему мое сообщение разделилось на две части?

Текст превысил лимит для одного сообщения в своей кодировке — 160 символов в GSM-7 или 70 в UCS-2 — поэтому он был отправлен как объединенное (многокомпонентное) сообщение. Каждый сегмент содержит 6-байтовый заголовок пользовательских данных для повторной сборки, что снижает емкость до 153 (GSM-7) или 67 (UCS-2) символов на часть, и каждый сегмент оплачивается как отдельное сообщение.

## Ссылки

- 3GPP TS 23.038 — Алфавиты и информация, специфичная для языка (алфавит по умолчанию GSM-7 и UCS-2): [3gpp.org](https://www.3gpp.org/)
- 3GPP TS 23.040 — Техническая реализация службы коротких сообщений (SMS), включая заголовок пользовательских данных: [3gpp.org](https://www.3gpp.org/)
- BroadNet — инструменты: [Калькулятор сегментов SMS](https://www.broadnet.me/tools/sms-segment-calculator) и [Проверка GSM-7 / Unicode](https://www.broadnet.me/tools/gsm7-unicode-checker).
