# UCS-2 и Unicode SMS

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

- Канонический URL: https://www.broadnet.me/ru/reference/ucs2-unicode-sms
- Язык: ru
- Последнее обновление: 2026-07-18
- Издатель: BroadNet (https://www.broadnet.me)

Как SMS передаёт Unicode через UCS-2 (16-битную): предел в 70 символов для одного сообщения, 67 на конкатенированный сегмент, что вынуждает UCS-2, и оговорка о суррогатных парах для эмодзи.

## Зачем SMS нужен UCS-2

GSM-7 покрывает лишь 128 символов плюс небольшой набор расширения. Всё остальное — арабица, китайский, кириллица, иврит, тайский, эмодзи и даже типографские символы вроде типографских кавычек и коротких тире — непредставимо. Для них SMS переключается на UCS-2, кодировку фиксированной ширины в 16 бит (фактически UTF-16 в обратном порядке байтов для базовой многоязычной плоскости). Она сигнализируется значением data_coding 0x08.

## Ёмкость: 70 и 67

Поле пользовательских данных SMS составляет 140 октетов. При двух октетах на символ UCS-2 умещает 70 символов в одно сообщение. Когда сообщение конкатенируется, 6-байтовый User Data Header занимает часть полезной нагрузки, оставляя 134 октета — 67 символов на сегмент. Это меньше половины ёмкости GSM-7, поэтому выбор кодировки сильно влияет на стоимость.

*Ёмкость на сообщение по кодировкам*

| Кодировка | Одиночный SMS | На каждый сегмент составного сообщения |
|---|---|---|
| GSM-7 (7-bit) | 160 симв. | 153 симв. |
| 8-битный двоичный код | 140 байт | 134 байта |
| UCS-2 (16-bit) | 70 симв. | 67 символов |

## Что запускает UCS-2

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

*Символы, вынуждающие UCS-2*

| Категория | Примеры |
|---|---|
| Emoji | 😀 ✅ 🚀 ❤️ |
| Типографская пунктуация | ' ' “ ” – — … |
| Нелатинские алфавиты | العربية · 中文 · Кириллица · עברית · ไทย |
| Буквы с диакритикой, отсутствующие в GSM-7 | â ê î ô û ã õ ą ę ř |

## Оговорка о суррогатных парах

UCS-2 строго 16-битна и покрывает базовую многоязычную плоскость Unicode. Символы выше U+FFFF — например, многие современные эмодзи — представляются в UTF-16 суррогатными парами из двух 16-битных кодовых единиц, поэтому один такой эмодзи занимает четыре октета (два «символа» UCS-2). Поэтому сообщение, выглядящее как один эмодзи, может считаться за два в пределе 70/67.

## Частые вопросы

### Сколько символов умещается в Unicode SMS?

70 символов в одном сообщении UCS-2 и 67 на сегмент, когда сообщение конкатенируется. Это потому, что каждый символ занимает 16 бит (два октета) при пределе полезной нагрузки SMS в 140 октетов.

### Что заставляет SMS переключиться на UCS-2?

Любой одиночный символ вне алфавита GSM-7 — эмодзи, типографская кавычка, длинное тире или нелатинский текст — вынуждает всё сообщение перейти на UCS-2. Кодировка выбирается на сообщение, а не на символ.

### UCS-2 — это то же самое, что UTF-16?

Почти. UCS-2 фиксированно 16-битна и покрывает базовую многоязычную плоскость. SMS трактует полезную нагрузку как UTF-16 в обратном порядке байтов, поэтому символы выше U+FFFF (многие эмодзи) становятся суррогатными парами и занимают четыре октета.

### Почему один эмодзи иногда считается за два символа?

Эмодзи выше U+FFFF кодируются как суррогатные пары UTF-16 — две 16-битные кодовые единицы — поэтому один глиф занимает две из 70 (или 67) доступных позиций символов UCS-2.

### Как случайно не отправить UCS-2?

Очищайте ввод перед отправкой: заменяйте типографские кавычки и тире их ASCII-эквивалентами, удаляйте или транслитерируйте случайные акценты и проверяйте наличие эмодзи. Проверка GSM-7/Unicode отметит конкретные символы, вынуждающие UCS-2.

## Источники

- [3GPP TS 23.038 — alphabets and data coding](https://www.3gpp.org/dynareport/23038.htm)
- [3GPP TS 23.040 — SMS technical realization](https://www.3gpp.org/dynareport/23040.htm)

## См. также

- [Набор символов GSM-7](https://www.broadnet.me/ru/reference/gsm7-character-set)
- [Схема кодирования данных (DCS)](https://www.broadnet.me/ru/reference/data-coding-scheme-dcs)
- [Определение кодировки и стоимость](https://www.broadnet.me/ru/reference/encoding-detection-and-cost)
- [Проверка GSM-7 / Unicode (бесплатный инструмент)](https://www.broadnet.me/ru/tools/gsm7-unicode-checker)
- [Калькулятор сегментов SMS (бесплатный инструмент)](https://www.broadnet.me/ru/tools/sms-segment-calculator)
