Текст SMS может быть отправлен в одной из двух кодировок в зависимости от набора символов, использованных при составлении сообщения.
Если текст содержит только символы из приведенной таблицы, то 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 считаются за два символа, ниже приведена таблица таких символов:
^ | { | } | \ | [ | ~ | ] | | | € |
В случае наличия хотя бы одного символа, не относящегося к GSM кодировке, SMS-сообщение будет отправлено в кодировке Unicode. Такое сообщение может содержать до 70 символов. Поддерживаются только символы из таблицы юникод (UTF-8) с кодами в диапазоне от U+0000 до U+9999, все остальные символы на данный момент не поддерживаются.
Длина одиночного сообщения, состоящего только из символов 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 |