Длина SMS и допустимые символы

Поддерживаемые наборы символов

Текст SMS может быть отправлен в одной из двух кодировок в зависимости от набора символов, использованных при составлении сообщения.

Кодировка GSM (латиница, 7 bit)

Если текст содержит только символы из приведенной таблицы, то SMS будет отправлено в кодировке GSM:

@ Δ SP 0 ¡ P ¿ p
£ _ ! 1 A Q a q
$ Φ " 2 B R b r
¥ Γ # 3 C S c s
è Λ ¤ 4 D T d t
é Ω % 5 E U e u
ù Π & 6 F V f v
ì Ψ ' 7 G W g w
ò Σ ( 8 H X h x
Ç Θ ) 9 I Y i y
LF Ξ * : J Z j z
Ø + ; K Ä k ä
ø Æ , < L Ö l ö
CR æ - = M Ñ m ñ
Å ß . > N Ü n ü
å É / ? O § o à

CR - символ возврата каретки
LF - символ переноса строки
SP - символ пробела

Данная кодировка позволяет отправлять до 160 символов в одном SMS сообщении. Так же следует учитывать, что в GSM-7 кодировке существует несколько символов, которые при подсчете длины SMS считаются за два символа, ниже приведена таблица таких символов:

^ { } \ [ ~ ] |

Кодировка Unicode (расширенный набор символов)

В случае наличия хотя бы одного символа, не относящегося к GSM кодировке, SMS сообщение будет отправлено в кодировке Unicode. Такое сообщение может содержать до 70 символов. Поддерживаются только символы из таблицы юникод (UTF-8) с кодами в диапазоне от U+0000 до U+9999, все остальные символы на данный момент не поддерживаются.

Длина SMS

Длина одиночного сообщения, состоящего только из символов GSM-алфавита - 160 символов.

Длина одиночного сообщения в кодировке Unicode - 70 символов.

В случае, если SMS-сообщение превышает указанную длину, оно разбивается на части - сегменты.

Внимание! Каждый сегмент SMS отправляется и тарифицируется как отдельное сообщение.

Каждый сегмент SMS содержит специальный заголовок (несколько символов служебной информации) для последующей склейки на стороне получателя, поэтому максимальная длина одного сегмента в длинном сообщении составляет 153 символа в GSM кодировке и 67 символов в Unicode.

Подробнее о том, как рассчитывается длина SMS и количество сегментов.

Максимальная длина SMS составляет 140 байт. Каждый символ GSM-алфавита кодируется 7 битами (за исключением нескольких, которые кодируются 14 битами). Это позволяет в 140 байтах, отведенных для текста SMS, передавать до 160 символов (140*8/7=160). При использовании в тексте SMS даже одного символа, не относящегося к GSM, весь текст передается в кодировке Unicode. При этом допустимое количество символов в одиночном сообщении сокращается до 70, так как в Unicode каждый символ кодируется при помощи 16 бит (140*8/16=70).

Для длинных SMS сообщений используется заголовок (или UDH), который содержит 6 байт служебной информации, что занимает 7 символов при использовании только латиницы или 3 символа при использовании Юникода. Соответственно максимальная длина текста в одном сегменте составляет 153 символа для GSM и 67 символов для Unicode кодировки.

Количество сегментов в SMS Количество символов в SMS
Кодировка GSM Кодировка Unicode
1 160 70
2 306 134
3 459 201
4 612 268
5 765 335
6 918 402
7 1071 469
8 1224 536
9 1377 603
10 1530 670
Обратите внимание! Хотя спецификация протокола SMPP позволяет создавать сообщения размером до 128 сегментов, на практике операторы мобильной связи не гарантируют качественную доставку сообщений, длина которых превышает 3 сегмента. Сообщения, включающие более 10 сегментов, некоторые операторы не доставляют совсем или могут доставить только часть сегментов, тем самым сделав бессмысленным весь текст сообщения. Поэтому мы рекомендуем отправлять сообщения, длиной не более 3 сегментов. Доставка более длинных SMS не гарантируется операторами связи.
Длина SMS и допустимые символы