В мобильной телефонии GSM 03.38 или 3GPP 23.038 — это кодировка символов, используемая в сетях GSM для SMS (служба коротких сообщений), CB ( сотовая трансляция ) и USSD (неструктурированные дополнительные служебные данные). Стандарт 3GPP TS 23.038 (первоначально рекомендация GSM 03.38) определяет 7-битный алфавит GSM по умолчанию , который является обязательным для телефонов GSM и сетевых элементов. [1] но набор символов подходит только для английского и ряда западноевропейских языков. Такие языки, как китайский, корейский или японский, необходимо передавать с использованием 16-битной кодировки символов UCS-2 . Ограниченное количество языков, таких как португальский , испанский , турецкий и ряд языков, используемых в Индии , написанных с помощью брахмических сценариев, могут использовать 7-битную кодировку с таблицей сдвига национального языка, определенной в 3GPP 23.038. Для двоичных сообщений используется 8-битная кодировка.
7-битный алфавит GSM по умолчанию и таблица расширений 3GPP TS 23.038 / GSM 03.38 [ править ]
Стандартной кодировкой сообщений GSM является 7-битный алфавит по умолчанию, как определено в рекомендации 23.038.
Семибитные символы должны быть закодированы в октеты в соответствии с одним из трех режимов упаковки:
CBS: используя эту кодировку, можно отправить до 93 символов (упакованных в до 82 октетов) в одном SMS-сообщении в службе сотового вещания.
SMS: используя эту кодировку, можно отправить до 160 символов (упакованных в до 140 октетов) в одном SMS-сообщении в сети GSM.
USSD: используя эту кодировку, можно отправить до 182 символов (упакованных до 160 октетов) в одном SMS-сообщении неструктурированных дополнительных служебных данных.
FF — это элемент управления разрывом страницы. Если он не распознан, он должен рассматриваться как LF .
CR2 — управляющий символ. В этой позиции не должны кодироваться никакие символы, специфичные для языка.
SS2 — это второй элемент управления аварийным выходом в одну смену, зарезервированный для будущих расширений.
Важно (особенно, когда сообщение должно быть сегментировано с использованием механизма объединения SMS ), чтобы символы из таблицы базового набора символов занимали один септет, а символы из таблицы расширения базового набора символов - два септета.
Обратите внимание, что вторая часть таблицы доступна только в том случае, если устройство GSM поддерживает механизм 7-битного расширения с использованием символьного префикса ESC. В противном случае сам код ESC интерпретируется как пробел, и следующий символ будет обрабатываться так, как если бы ведущего кода ESC не было.
Большая часть верхней части таблицы не используется в наборе символов по умолчанию, но стандарт GSM определяет некоторые индикаторы кода языка, которые позволяют системе идентифицировать национальные варианты этой части и поддерживать больше символов, чем показано в таблице выше.
В стандартном текстовом сообщении GSM все символы кодируются с использованием 7-битных кодовых единиц, упакованных вместе для заполнения всех битов октетов. Так, например, конверт SMS длиной 140 октетов , [3] без индикатора другого языка, а только со стандартным префиксом класса, может передавать до (140*8)/7=160, то есть 160 7-битных символов GSM (но учтите, что код ESC засчитывается для одного из них, если символы в используется верхняя часть таблицы).
Можно отправлять более длинные сообщения, но для последующих SMS-сообщений потребуется префикс продолжения и порядковый номер (эти байты префикса и порядковый номер учитываются в пределах максимальной длины 140-байтовой полезной нагрузки формата конверта).
Если в последнем октете сообщения имеется от 1 до 6 запасных битов, эти биты устанавливаются в ноль (эти биты считаются не символом, а только заполнителем). Если в последнем октете сообщения имеется 7 запасных битов, эти биты устанавливаются в 7-битный код элемента управления CR (также используемый в качестве заполнителя), а не устанавливаются в ноль (где их можно спутать с 7-битный код символа «@»).
Эта 7-битная кодировка позволяет транспортировать тексты, состоящие из печатных символов базовой латиницы (блок Unicode) (за исключением знака «гравитация»/обратной кавычки), а также некоторых символов набора символов ISO Latin 1. Он также позволяет кодировать тексты, написанные греческим шрифтом, но только заглавными буквами; для такого использования в греческом языке латинские заглавные буквы, которые выглядят как греческие буквы, повторно используются с тем же кодом, так что приведенный выше набор символов является полным только для современного монотонного греческого языка, ограниченного заглавными буквами. Полная поддержка греческого алфавита (включая строчные буквы) требует национальной версии сдвинутой 7-битной таблицы (с использованием кода ESC для каждого национального символа, закодированного в этой сдвинутой таблице), или неуказанной собственной 8-битной кодировки, или использование кодировки UCS-2 (см. ниже).
Обратите внимание, что специальный код, отмеченный SS2 в таблице выше, также был назначен (и закодирован как 0x1B, 0x1B), чтобы разрешить использование другой альтернативной 7-битной таблицы сдвига. Но этот механизм никогда не использовался, и предпочтение отдавалось кодировке UCS-2.
Обратите внимание, что символ 0x09 ( Ç , заглавная буква C с седилем) вместо этого должен быть заменен на ç (маленькая c с седилем) в современной реализации, как рекомендовано Unicode, [4] поскольку версия в верхнем регистре малопригодна.
Режим 8-битного кодирования данных обрабатывает информацию как необработанные данные. Согласно стандарту, алфавит для этой кодировки зависит от пользователя.
Эта кодировка позволяет использовать более широкий диапазон символов и языков. UCS-2 может отображать наиболее часто используемые латинские и восточные символы за счет больших затрат места. Строго говоря, UCS-2 ограничен символами базовой многоязычной плоскости . Однако, поскольку современные среды программирования не предоставляют кодировщиков или декодеров для UCS-2, некоторые сотовые телефоны (например, iPhone ) используют UTF-16 вместо UCS-2. [5] Это работает, поскольку для символов в базовой многоязычной плоскости (включая полные алфавиты большинства современных человеческих языков) кодировки UCS-2 и UTF-16 идентичны. Для кодирования символов за пределами BMP (недоступных в обычном UCS-2), таких как Emoji , UTF-16 использует суррогатные пары , которые при декодировании с помощью UCS-2 будут выглядеть как две действительные, но несопоставленные кодовые точки .
Одно SMS-сообщение GSM с использованием этой кодировки может содержать не более 70 символов (140 октетов).
Обратите внимание, что на многих сотовых телефонах GSM нет специального предварительного выбора кодировки UCS-2. По умолчанию используется 7-битная кодировка, описанная выше, до тех пор, пока не будет введен символ, которого нет в 7-битной таблице GSM (например, строчная буква «a» с острым знаком: «á»). В этом случае все сообщение перекодируется с использованием кодировки UCS-2, а максимальная длина сообщения, отправляемого в одном SMS, сразу уменьшается до 70 символов вместо 160. Другие варьируются в зависимости от выбора и конфигурации SMS-приложения. и длина сообщения [ нужна ссылка ] .
Чтобы избежать непредвиденных расходов для отправителей, имеющих подписку на ограниченный пакет отправляемых SMS, приложения должны [ по мнению кого? ] отображать количество используемых символов и максимальное количество символов в составленном SMS. Когда сообщение превышает этот максимум, сообщение будет [ нужны разъяснения ] отправляться в виде нескольких последовательных SMS-сообщений, содержащих части сообщения (каждое из которых содержит порядковый номер, в каждой части которого также используется несколько начальных символов); эти части предназначены для [ нужна ссылка ] будет повторно собран получателем позже.
Некоторые приложения предупреждают пользователя, когда сообщение необходимо разделить, или даже отправляют более длинное сообщение в виде мультимедийного сообщения (MMS).
Начиная с версии 8 стандарта 3GPP 23.038 от марта 2008 г., доступ к дополнительным наборам символов можно получить с помощью таблиц сдвига национального языка.
Эти таблицы позволяют использовать разные наборы символов в зависимости от языка, на котором будет написан текст. Выбор таблицы для данного сообщения выбирается в разделе «Заголовок пользовательских данных» SMS-сообщения и может быть указан для всего текста ( таблица блокировки сдвига, заменяющая стандартную 7-битную алфавитную таблицу GSM по умолчанию) или для одного символа ( одинарная таблица сдвига) . таблица, заменяющая таблицу расширений 7-битного алфавита GSM по умолчанию). Таблицы блокировки и односменной таблицы в одном сообщении возможны, если необходимо заменить как стандартную алфавитную таблицу по умолчанию, так и таблицу расширений алфавита по умолчанию.
Используя таблицу сдвига, сообщение по-прежнему может использовать 7-битную кодировку символов, но можно выбрать другой набор для правильного отображения символов с диакритическими знаками и символов, специфичных для языка. Это позволяет использовать до 155 символов, закодированных в 136 октетов (140 октетов минус 4 октета заголовка пользовательских данных , необходимых для указания использования таблицы сдвига и кода языка). В таблицах блокировки и односменной таблицы разрешено до 152 символов, закодированных в 133 октета (140 октетов минус 7-октетный заголовок пользовательских данных ).
Символы из любой таблицы блокировки блокировки занимают один септет, символы из таблицы одиночного сдвига (или таблицы расширения базового набора символов) занимают два септета.
Первоначально были указаны сменные таблицы только для турецкого языка; Испанский и португальский были добавлены в более поздних версиях версии 8. В версии 9 были представлены 10 языков, используемых в Индии, с использованием брахмического письма (бенгали, гуджарати, хинди, каннада, малаялам, ория, пенджаби, тамильский, телугу) и урду .
До сих пор не существует определенной таблицы национальных языковых сдвигов для французского, греческого, русского, болгарского, арабского, иврита и большинства центральноевропейских языков, которым требуется лучший охват, чем стандартный 7-битный набор символов по умолчанию и его 7-битный набор расширенных символов по умолчанию: если когда-либо будет составлен какой-либо символ, который не может быть представлен в этих 7-битных наборах GSM по умолчанию, сообщение будет автоматически перекодировано с использованием UCS-2 с эффектом деления более чем на два максимальной длины символов сообщений, которые могут быть отправлены. по цене одного SMS (когда сообщение разделено на несколько частей, в заголовке пользовательских данных необходимо еще несколько октетов для указания порядкового номера каждой части).
Хотя в редакции GSM 03.38 (еще в версии 4.0.1 от сентября 1994 г.) определены значения схемы кодирования данных для системы сотового вещания (CBS) для немецкого, английского, итальянского, французского, испанского, голландского, шведского, датского, финского языков. , норвежский, греческий и турецкий; с добавлением венгерского, польского, чешского, иврита, арабского, русского и исландского языков в более поздних версиях, для этих языков не были определены таблицы кодирования. Целью этого поля было исключительно определение языка сообщения.
Также нет таблицы языковых сдвигов для японского языка, написанного основными канами, корейского языка, написанного джамо хангыль, или китайского языка, написанного письмом хань. В Японии это часто не является проблемой, поскольку для обмена сообщениями здесь используются другие стандарты, помимо GSM и WAP. В двух других языках также слишком много различных символов, чтобы поместиться в 7-битную таблицу сдвига.
Его также можно использовать для языка синдхи, также написанного арабской графикой.
Иногда его можно использовать и для арабского языка , но восточные цифры (закодированные здесь в персидско-индуистском варианте) не будут использоваться в этом случае, поскольку стандартный арабский язык предпочитает свои традиционные восточно-арабские цифры и часто заменяется западными. Арабские цифры (закодированные в наборе символов блокирующего сдвига в столбце 0x30), которые теперь также часто используются в урду. Однако в Индии телефоны, распознающие арабский язык, могут заменять персидско-индуистские варианты восточно-арабских цифр традиционными восточно-арабскими цифрами.
Блокировка набора символов Shift для языка урду UDH содержит 0x25 0x01 0x0D [2]
Arc.Ask3.Ru Номер скриншота №: fe3edf4e33227c2d3dd2a1399ba1de4a__1714135560 URL1:https://arc.ask3.ru/arc/aa/fe/4a/fe3edf4e33227c2d3dd2a1399ba1de4a.html Заголовок, (Title) документа по адресу, URL1: GSM 03.38 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)