GSM 03.38 – это стандарт кодировки, используемый в мобильных сетях для отправки SMS. Он определяет набор символов, которые можно использовать в 7-битном коде, а также правила обработки расширенных символов, влияющие на длину сообщения.
Стандарт GSM 7-bit позволяет отправлять до 160 символов в одном SMS, тогда как использование символов, выходящих за пределы этого набора, приводит к переходу на Unicode (UCS-2), уменьшая максимальную длину SMS до 70 символов.
Понимание кодировки GSM 03.38 важно при составлении текстов SMS, так как неправильное использование символов может увеличить количество отправляемых сообщений и повысить затраты на рассылку.
Символы | Кодировка (Hex) | Символы | Кодировка (Hex) |
---|---|---|---|
@ | 0x00 | SP (пробел) | 0x20 |
£ | 0x01 | 0 | 0x30 |
$ | 0x02 | 1 | 0x31 |
¥ | 0x03 | 2 | 0x32 |
è | 0x04 | 3 | 0x33 |
é | 0x05 | 4 | 0x34 |
ù | 0x06 | 5 | 0x35 |
ì | 0x07 | 6 | 0x36 |
ò | 0x08 | 7 | 0x37 |
Ç | 0x09 | 8 | 0x38 |
LF (новая строка) | 0x0A | 9 | 0x39 |
Ø | 0x0B | A | 0x41 |
ø | 0x0C | B | 0x42 |
CR (возврат каретки) | 0x0D | C | 0x43 |
Å | 0x0E | D | 0x44 |
å | 0x0F | E | 0x45 |
Δ | 0x10 | F | 0x46 |
_ | 0x11 | G | 0x47 |
Φ | 0x12 | H | 0x48 |
Γ | 0x13 | I | 0x49 |
Λ | 0x14 | J | 0x4A |
Ω | 0x15 | K | 0x4B |
Π | 0x16 | L | 0x4C |
Ψ | 0x17 | M | 0x4D |
Σ | 0x18 | N | 0x4E |
Θ | 0x19 | O | 0x4F |
Ξ | 0x1A | P | 0x50 |
ESC (Escape) | 0x1B | Q | 0x51 |
Æ | 0x1C | R | 0x52 |
æ | 0x1D | S | 0x53 |
ß | 0x1E | T | 0x54 |
É | 0x1F | U | 0x55 |
Полный список символов можно найти в официальной спецификации GSM 03.38 (ETSI TS 100 900).
Расширенные символы и escape-последовательность
Некоторые символы не входят в основной набор GSM 7-bit и требуют использования escape-последовательности (0x1B), что фактически увеличивает их длину до двух символов.
Примеры расширенных символов:
Символ | Кодировка (Hex) |
---|---|
^ | 0x1B14 |
{ | 0x1B28 |
} | 0x1B29 |
\ | 0x1B2F |
[ | 0x1B3C |
~ | 0x1B3D |
] | 0x1B3E |
` | ` |
Использование этих символов уменьшает доступное количество символов в одном SMS. Например, если сообщение состоит из 160 символов и включает {, то реальное количество доступных символов уменьшится до 159.
Переход на Unicode (UCS-2) и его влияние на длину SMS
Если сообщение содержит хотя бы один символ, не входящий в GSM 7-bit, оно будет закодировано в UCS-2 (16-битная кодировка Unicode).
Пример символов, приводящих к переходу на UCS-2:
Пример:
Чтобы избежать ненужного увеличения количества сообщений:
Разработчикам рекомендуется проверять сообщения перед отправкой, чтобы оптимизировать их длину и избежать ненужного увеличения количества сегментов SMS.
Если у вас есть вопросы по кодировке SMS, обратитесь в техническую поддержку.