GSM-7 — это 7-битный алфавит по умолчанию, определённый в GSM 03.38 (3GPP TS 23.038) для SMS. Он кодирует 128 символов — латинские буквы, цифры, знаки препинания и несколько акцентированных и греческих символов — по 7 бит каждый. Ещё десять символов находятся в таблице расширения и стоят по два септета. Текст умещается в 160 символов на одно SMS.
Базовая таблица (128 символов)
Алфавит по умолчанию GSM-7 упаковывает 128 символов по 7 бит каждый. Он покрывает заглавный латинский алфавит, цифры, распространённые знаки препинания, набор акцентированных латинских гласных, знаки параграфа и валют и несколько заглавных греческих букв, используемых как символы. Каждый символ здесь стоит ровно один септет (7 бит).
| Группа | Символы |
|---|---|
| Латинские заглавные | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
| Латинские строчные | a b c d e f g h i j k l m n o p q r s t u v w x y z |
| Цифры | 0 1 2 3 4 5 6 7 8 9 |
| Пунктуация | ! " # % & ' ( ) * + , - . / : ; < = > ? _ |
| Латиница с диакритикой | à ä å æ è é ì ñ ò ö ø ù ü Ä Å Æ Ç É Ñ Ö Ø Ü ß |
| Греческие символы | Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ |
| Валюта / символы | £ $ ¥ ¤ € (ext) § ¡ ¿ @ |
| Пробельные символы | SP (пробел), CR, LF |
Таблица расширения
Десять символов не входят в базовую таблицу. Они достигаются escape-префиксом (0x1B), за которым следует код символа в таблице расширения, а значит каждый из них стоит два септета, а не один. Включение любого из них в сообщение уменьшает фактическую ёмкость одного SMS. Обратите внимание, что знак евро (€) — один из них.
| Символ | Имя |
|---|---|
| | | Вертикальная черта |
| ^ | Карет / циркумфлекс |
| € | Знак евро |
| { | Левая фигурная скобка |
| } | Правая фигурная скобка |
| [ | Левая квадратная скобка |
| ] | Правая квадратная скобка |
| ~ | Тильда |
| \ | Обратный слеш |
| FF | Перевод страницы |
7-битная упаковка
Поскольку каждый символ занимает 7 бит, а октеты — 8 бит, GSM-7 упаковывает септеты через границы байтов. Восемь 7-битных символов упаковываются в семь 8-битных октетов, поэтому 160 септетов заполняют 140 октетов — предел пользовательских данных SMS. Упаковка сдвигает биты каждого следующего символа для заполнения промежутков, из-за чего наивный побайтовый взгляд на GSM-7 SMS выглядит искажённым.
8 characters (56 bits) ────► 7 octets (56 bits)
160 GSM-7 septets ────► 140 octets (the SMS payload limit)
(an extension char = 2 septets)Таблицы переключения языков
3GPP TS 23.038 также определяет национальные таблицы переключения языков (например, турецкую, испанскую, португальскую), которые переназначают некоторые позиции таблицы расширения на специфичные для языка буквы. Поддержка неравномерна среди аппаратов и сетей, поэтому многие отправители избегают полагаться на них и переходят на UCS-2, когда сообщению нужны символы вне базового набора GSM-7.
Часто задаваемые вопросы
Сколько символов умещается в GSM-7 SMS?
160 символов в одном SMS, поскольку 160 септетов по 7 бит заполняют предел пользовательских данных в 140 октетов. Конкатенированные сообщения GSM-7 снижаются до 153 символов на сегмент, чтобы освободить место для User Data Header.
Какие символы считаются двумя в GSM-7?
Десять символов таблицы расширения — | ^ € { } [ ] ~ \ и form-feed — каждый стоит два септета, потому что им нужен escape-префикс. Использование любого из них уменьшает объём текста, умещающегося в одно SMS.
Есть ли знак евро в GSM-7?
Да, но в таблице расширения, поэтому он стоит два септета, а не один. Поэтому сообщение с € умещает меньше символов, прежде чем ему понадобится второй сегмент.
Почему сообщение GSM-7 выглядит искажённым на уровне байтов?
Потому что GSM-7 упаковывает 7-битные символы через границы 8-битных октетов. Восемь символов занимают семь октетов, поэтому чтение полезной нагрузки по одному байту на символ даёт бессмыслицу — сначала нужно распаковать септеты.
Что произойдёт, если в тексте есть символ не из GSM-7?
Всё сообщение должно переключиться на кодировку UCS-2 (16-битную), что снижает ёмкость одного SMS со 160 до 70 символов. Один символ не из GSM-7 (эмодзи, типографская кавычка или многие нелатинские буквы) вынуждает это.
Технические характеристики источника
На этой странице представлены опубликованные стандарты, на которых они основаны. (Открывается в новой вкладке)