Перейти к содержимому
Кодировщик PDU

Онлайн-кодировщик PDU для сообщений SMS-SUBMIT

Превратите сообщение в шестнадцатеричную строку, которую модем GSM ожидает в режиме PDU. Кодировщик упаковывает септеты GSM-7, переходит в UCS-2 при необходимости и добавляет UDH, когда сообщение требует нескольких частей.

Работает в этом браузереБез аккаунтаGSM-7 и UCS-2

Соберите сообщение в PDU SMS-SUBMIT

Форма открывается с готовым примером. Измените текст, номер или параметры и нажмите «Кодировать». Результат строится JavaScript на этом компьютере.

Кодировщик PDU

Без сети

GSM-7 вмещает 160 септетов в одно SMS. Символ вне алфавита GSM переводит всё сообщение в UCS-2.

Национальный (0x81), если номер не начинается с +; при + выбирается международный (0x91).

0 — поле не включается. Инструмент ограничивает срок 8760 часами (около года).

0–255 — 8-битная ссылка; 256–65535 — 16-битная.

Параметры отчёта

ЧастьUDHТекст в этой части

Каждый блок начинается строкой ----- PDU n/total -----. В режиме PDU отправляйте шестнадцатеричные символы каждого блока отдельно.

Ничто из введённого здесь никуда не отправляется. Страница работает из локального файла или из офлайн-копии сайта.

Что такое режим PDU

Режим PDU передаёт модему полный кадр протокола вместо простой строки.

SMS — не только текст. Вокруг сообщения стоят адрес сервисного центра, получатель, маркер кодировки, срок действия и поле длины. В текстовом режиме (AT+CMGF=1) модем заполняет их сам и показывает только читаемую часть. В режиме PDU (AT+CMGF=0) вы задаёте весь кадр в шестнадцатеричном виде, поэтому каждое поле под вашим контролем.

Кадр определён в 3GPP TS 23.040; алфавит символов и его 7-битная упаковка — в TS 23.038. Кодировщик следует обоим: удаляет из номера всё, кроме цифр, меняет местами пары в BCD, задаёт октет типа адреса, выбирает GSM-7 или UCS-2, упаковывает септеты по порядку и включает признак заголовка пользовательских данных, когда сообщение разбито.

Почему текст выглядит странно. Семибитные символы упакованы в восьмибитные октеты, поэтому один септет может занимать два байта. PDU GSM-7 — не посимвольный дамп байтов, и правка вручную легко его ломает.

Почему важен первый октет. Октет после сервисного центра несёт тип сообщения, признак отчёта о доставке и признак объединения. Кодировщик пишет 0x01 плюс 0x40 для составного сообщения, 0x10 при заданном сроке действия и 0x20, когда запрошен отчёт.

Структура полей SMS-SUBMIT

Читая результат слева направо, поля идут так:

ПолеОктетыЧто несётЧто пишет кодировщик
SCA1 + nАдрес сервисного центра и октет типа адреса00, если поле пустое; иначе октет длины, тип адреса и BCD-цифры
Первый октет1Тип сообщения, формат срока действия, запрос отчёта, признак заголовка данных01 для SMS-SUBMIT, плюс 40, 10 и 20 по необходимости
MR1Ссылка на сообщение, которую увеличивает аппаратСсылка объединения, усечённая до одного октета; 00, если не задана
Получатель2 + nДлина номера, тип адреса и BCD-цифры81 для национального номера, 91, если ввод начинается с +
PID1Идентификатор протокола00, обычное короткое сообщение
DCS1Алфавит и класс сообщения00 GSM-7, 08 UCS-2, 10 или 18 для flash-сообщения
VP0, 1 или 7Срок действия: относительный, расширенный или абсолютныйНе включается при 0 часов; иначе один относительный октет, шаг которого растёт с диапазоном (5 минут, полчаса, сутки, неделя)
UDL1Длина пользовательских данныхЧисло септетов для GSM-7 (UDH считается в септетах), число октетов для UCS-2
UDnНеобязательный UDH плюс упакованный текст7-битная упаковка после выровненного UDH или UCS-2 в порядке от старшего байта

Относительный срок действия занимает один октет: значения 0–143 считают шагами по 5 минут до 12 часов, 144–169 — по полчаса до 24 часов, 170–196 — сутками до 30 дней, 197–255 — неделями дальше, всё от момента получения сообщения сервисным центром. Инструмент принимает 0–8760 часов (около года).

GSM-7, UCS-2 и составные SMS

Один PDU несёт 140 октетов. Сколько символов поместится, зависит от алфавита и от наличия UDH.

КодировкаОдин PDUС 8-битным UDHС 16-битным UDH
GSM-7160 септетов153 септета152 септета
UCS-270 единиц67 единиц66 единиц

UDH из 6 байт занимает 48 бит, что округляется до 7 септетных слотов в GSM-7; 16-битная ссылка добавляет ещё один октет и ещё один слот. Поэтому пределы разбиения — 153 или 152, а не 160.

GSM-7 охватывает латинские буквы, цифры и пунктуацию исходного алфавита GSM. Десять символов требуют двух септетов: €, ^, {, }, [, ], ~, |, обратная косая черта и символ перевода страницы. Кодировщик пишет перед каждым из них escape-код 1B и никогда не разрывает пару между частями. Всё вне обеих таблиц вынуждает UCS-2, где символ занимает два октета, а предел падает до 70.

Разобранные примеры

Эти результаты берутся из регрессионного файла, который поставляется с этой страницей. Входные данные неизменны, а ожидаемая шестнадцатеричная строка получена независимой реализацией TS 23.038 / TS 23.040.

ВходКодировкаPDU
Hello SMSDeliverer.com!GSM-7, национальный номер, без сервисного центра000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700
€GSM-7, символ расширения000100098121436587F90000029B32
您好,世界!UCS-2000100098121436587F900080C60A8597DFF0C4E16754CFF01

Тестовая запись — assets/js/tests/pdu-vectors.json. В ней есть и строка, записанная из более старой сборки: этот вектор помечен как падающий, с описанием дефектов; его не правят, пока он не начнёт проходить.

Когда нужен PDU, а не текстовый режим

Текстовый режим легче читать. Режим PDU — единственный способ контролировать то, что реально отправляется.

Длинные сообщения

Составное SMS — несколько PDU, связанных UDH. Части, их порядок и номер ссылки видны только в режиме PDU.

Интеграция

Если вы строите шлюз, тестовый стенд или очередь, передающую кадры в AT+CMGS, нужны точные октеты, а не интерпретация строки модемом.

Диагностика

Искажённый текст, пропавшие буквы с диакритикой и разбитые сообщения обычно означают неверный DCS или сломанный UDH. И то, и другое здесь видно.

Оба режима достигают одной сети и тарифицируются одинаково. Разница в том, где собирается кадр: внутри модема или в программе, которую можно проверить. Если сообщение должно нести конкретный алфавит, срок действия или запрос отчёта, режим PDU — короткий путь. Текстовый режим остаётся для быстрой ручной проверки, а декодер на этом сайте читает любой кадр, когда он приходит.

Нужно автоматическое решение?

Эта страница — справочный инструмент. SMS Deliverer делает ту же работу для каждого сообщения в очереди.

Приложение Windows разбивает длинные сообщения, выбирает GSM-7 или UCS-2, задаёт ссылку UDH, повторяет неудачные части и сохраняет отчёт о доставке рядом с контактом. Один и тот же путь кодирования работает и для одного сообщения, и для нескольких тысяч, а трафик несут SIM-карты в ваших модемах.

Руководство по GSM-модемам объясняет аппаратную часть, страница программы для Windows перечисляет функции отправки и отчётов, а декодер PDU читает кадры, снятые с модема или телефона.

Что входит в результат кодировщика

  • Упаковка септетов GSM-7 и пары расширения
  • UCS-2 с целыми суррогатными парами
  • 8-битные и 16-битные ссылки объединения
  • Национальный и международный формат получателя
  • Относительный срок действия и класс flash

Проверено 2026-11. Бесплатная пробная версия охватывает весь путь отправки; этому инструменту не нужны лицензия и установка.

Вопросы покупателей

Этот кодировщик бесплатный и нужен ли аккаунт?

Он бесплатный и аккаунт не нужен. Страница состоит из HTML и JavaScript и работает также из офлайн-копии сайта.

Почему мой PDU начинается с 00?

Первый октет — длина адреса сервисного центра. 00 означает, что PDU не несёт сервисного центра, поэтому аппарат или модем использует записанный на SIM. Укажите номер сервисного центра, если хотите записать его в кадр.

Почему длинное сообщение превратилось в несколько PDU?

Один PDU вмещает 140 октетов. GSM-7 вмещает 160 септетов, или 153 при 6-байтном UDH; UCS-2 вмещает 70, или 67 с тем же заголовком. Текст делится по границе символа, и каждой части даётся порядковый номер.

Можно ли отправить результат через AT+CMGS?

Да. Переведите модем в режим PDU командой AT+CMGF=0, затем передайте число октетов кадра после поля сервисного центра. Отправляйте по одной части и сохраняйте порядок: аппарат собирает части по ссылке UDH и порядковым номерам.