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, обратитесь в техническую поддержку.