本文へスキップ
PDUエンコーダー

SMS-SUBMITメッセージ用オンラインPDUエンコーダー

メッセージを、GSMモデムがPDUモードで待つ16進文字列に変換します。エンコーダーはGSM-7のセプテットを詰め込み、必要ならUCS-2へ切り替え、複数パートが必要なときはUDHを追加します。

ブラウザ内で動作アカウント不要GSM-7とUCS-2

SMS-SUBMITのPDUを組み立てる

フォームはサンプル入りで開きます。本文、番号、パラメータを変えて「エンコード」を押してください。結果はこの端末上のJavaScriptが生成します。

PDUエンコーダー

ネットワーク不要

GSM-7では1通に160セプテット入ります。GSMアルファベット外の文字が1つあると、メッセージ全体がUCS-2になります。

番号が+で始まらない場合は国内(0x81)、+がある場合は国際(0x91)が選ばれます。

0なら項目を含めません。ツールは有効期限を8760時間(約1年)までに制限します。

0–255は8ビット参照、256–65535は16ビット参照です。

レポートの設定

パートUDHこのパートの本文

各ブロックは----- PDU n/total -----の行で始まります。PDUモードでは、ブロックごとの16進文字列を個別に送ってください。

ここに入力した内容はどこへも送信されません。ローカルファイルやサイトのオフラインコピーからも動作します。

PDUモードとは

PDUモードは、単なる文字列ではなくプロトコルのフレーム全体をモデムへ渡します。

SMSは本文だけではありません。メッセージの周囲にはサービスセンターのアドレス、宛先、文字コードの標識、有効期限、長さの項目があります。テキストモード(AT+CMGF=1)ではモデムがこれらを埋め、読める部分だけを見せます。PDUモード(AT+CMGF=0)ではフレーム全体を16進で指定するため、すべての項目を自分で制御できます。

フレームは3GPP TS 23.040、文字アルファベットと7ビットの詰め込みはTS 23.038で定義されています。エンコーダーは両方に従い、番号から数字以外を除き、BCDのペアを入れ替え、アドレス種別のオクテットを設定し、GSM-7かUCS-2かを選び、セプテットを順に詰め、メッセージが分割されるときはユーザーデータヘッダーの標識を含めます。

本文が妙に見える理由。7ビットの文字は8ビットのオクテットに詰め込まれるため、1つのセプテットが2バイトにまたがることがあります。GSM-7のPDUは文字ごとのバイト列ではなく、手で編集すると壊れやすいものです。

先頭オクテットが重要な理由。サービスセンターの後のオクテットは、メッセージ種別、配信レポートの要求、連結の標識を運びます。エンコーダーは0x01に、連結なら0x40、有効期限を設定したら0x10、レポートを要求したら0x20を加えます。

SMS-SUBMITの項目構成

結果を左から読むと、項目は次の順に並びます。

項目オクテット運ぶ内容エンコーダーが書く値
SCA1 + nサービスセンターのアドレスとアドレス種別オクテット空欄なら00、それ以外は長さのオクテット、アドレス種別、BCD数字
先頭オクテット1メッセージ種別、有効期限の形式、レポート要求、データヘッダーの標識SMS-SUBMITは01、必要に応じて40、10、20を加算
MR1端末が増やしていくメッセージ参照連結参照番号を1オクテットに切り詰めた値。未設定なら00
宛先2 + n番号の長さ、アドレス種別、BCD数字国内番号は81、入力が+で始まる場合は91
PID1プロトコル識別子00、通常のショートメッセージ
DCS1アルファベットとメッセージクラスGSM-7は00、UCS-2は08、フラッシュSMSは10または18
VP0、1、7有効期限:相対、拡張、絶対0時間なら含めない。それ以外は相対の1オクテットで、刻みは範囲に応じて伸びる(5分、30分、1日、1週)
UDL1ユーザーデータの長さGSM-7はセプテット数(UDHもセプテットで数える)、UCS-2はオクテット数
UDn任意のUDHと詰め込まれた本文整列したUDHの後ろに7ビット詰め込み、またはUCS-2を上位バイトから順に

相対の有効期限は1オクテットです。0–143は5分刻みで最大12時間、144–169は30分刻みで最大24時間、170–196は1日刻みで最大30日、197–255は週刻みでそれ以上を、いずれもサービスセンターがメッセージを受け取った時点から数えます。ツールは0–8760時間(約1年)を受け付けます。

GSM-7、UCS-2、連結SMS

1つのPDUは140オクテットを運びます。何文字入るかはアルファベットとUDHの有無で決まります。

文字コード1つのPDU8ビットUDHあり16ビットUDHあり
GSM-7160セプテット153セプテット152セプテット
UCS-270単位67単位66単位

6バイトのUDHは48ビットを占め、GSM-7では7セプテット分に切り上げられます。16ビット参照はさらに1オクテット、1スロットを加えます。そのため分割の上限は160ではなく153または152になります。

GSM-7はラテン文字、数字、GSM基本アルファベットの記号を扱います。次の10文字は2セプテットを必要とします:€、^、{、}、[、]、~、|、バックスラッシュ、改ページ記号。エンコーダーはこれらの前にエスケープ1Bを書き、パート間で対を分断しません。どちらの表にもない文字はUCS-2を強制し、1文字が2オクテット、上限は70に下がります。

分解した例

これらの結果は、このページに付属する回帰テストファイルから取っています。入力は固定で、期待する16進文字列は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はUDHで結ばれた複数のPDUです。パート、その順序、参照番号はPDUモードでしか見えません。

連携

ゲートウェイ、テストベンチ、AT+CMGSへフレームを渡すキューを作るなら、モデムの文字列解釈ではなく正確なオクテットが必要です。

診断

文字化け、消えたアクセント文字、壊れた分割は、多くの場合DCSの誤りかUDHの破損です。どちらもここで見えます。

どちらのモードも同じネットワークに届き、課金も同じです。違うのはフレームをどこで組み立てるか、モデムの中か、検証できるプログラムかです。特定のアルファベット、有効期限、レポート要求をメッセージに載せるなら、PDUモードが近道です。テキストモードは手早い確認用に残り、このサイトのデコーダーは届いた任意のフレームを読みます。

自動化が必要ですか

このページは参照用のツールです。SMS Delivererはキュー内の各メッセージで同じ処理を行います。

Windowsアプリは長いメッセージを分割し、GSM-7かUCS-2かを選び、UDHの参照番号を設定し、失敗したパートを再試行し、配信レポートを連絡先のそばに保存します。同じ符号化経路が1通にも数千通にも働き、通信はお手持ちのモデムのSIMカードが担います。

GSMモデムの解説はハードウェア側を、Windows版ソフトのページは送信とレポートの機能を説明します。PDUデコーダーはモデムや端末から取り出したフレームを読みます。

エンコーダーの結果に含まれるもの

  • GSM-7のセプテット詰め込みと拡張文字の対
  • サロゲートペアを保ったUCS-2
  • 8ビットと16ビットの連結参照
  • 国内形式と国際形式の宛先
  • 相対の有効期限とフラッシュのクラス

2026-11に確認。無料体験版は送信経路の全体を試せます。このツールにライセンスもインストールも不要です。

購入者がよく尋ねる質問

このエンコーダーは無料ですか、アカウントは必要ですか?

無料でアカウントも不要です。ページはHTMLとJavaScriptだけでできており、サイトのオフラインコピーからも動作します。

PDUが00で始まるのはなぜですか?

先頭オクテットはサービスセンターのアドレス長です。00はPDUがサービスセンターを含まず、端末やモデムがSIMに書かれた値を使うことを意味します。フレームに含めたい場合はサービスセンター番号を入力してください。

長いメッセージが複数のPDUになったのはなぜですか?

1つのPDUは140オクテットです。GSM-7は160セプテット、6バイトのUDHがあると153セプテット、UCS-2は70単位、同じヘッダーで67単位です。本文は文字の境界で分割され、各パートに順序番号が付きます。

結果はAT+CMGSで送れますか?

はい。AT+CMGF=0でモデムをPDUモードにし、サービスセンター項目の後にフレームのオクテット数を渡します。1パートずつ順序を保って送ってください。端末はUDHの参照番号と順序番号でパートを組み立てます。