目前,發送短消息經常使用Text和PDU(Protocol Data Unit,協議數據單元)模式。使用Text模式收發短信代碼簡單,實現起來十分容易,但最大的缺點是不能收發中文短信;而PDU模式不只支持中文短信, 也能發送英文短信。PDU模式收發短信可使用3種編碼:7-bit、8-bit和UCS2編碼。7-bit編碼用於發送普通的ASCII字符,8- bit編碼一般用於發送數據消息,UCS2編碼用於發送Unicode字符。通常的PDU編碼由A B C D E F G H I J K L M十三項組成。
A:短信息中心地址長度,2位十六進制數(1字節)。
B:短信息中心號碼類型,2位十六進制數。
C:短信息中心號碼,B+C的長度將由A中的數據決定。
D:文件頭字節,2位十六進制數。
E:信息類型,2位十六進制數。
F:被叫號碼長度,2位十六進制數。
G:被叫號碼類型,2位十六進制數,取值同B。
H:被叫號碼,長度由F中的數據決定。
I:協議標識,2位十六進制數。
J:數據編碼方案,2位十六進制數。
K:有效期,2位十六進制數。
L:用戶數據長度,2位十六進制數。
M:用戶數據,其長度由L中的數據決定。J中設定採用UCS2編碼,這裏是中英文的Unicode字符。
PDU編碼協議簡單說明
例1 發送:SMSC號碼是+8613800250500,對方號碼是13693092030,消息內容是「Hello!」。從手機發出的PDU串能夠是
08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0 00 00 00 06 C8 32 9B FD 0E 01
對照規範,具體分析:
分段 含義 說明
08 SMSC地址信息的長度 共8個八位字節(包括91)
91 SMSC地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,補‘F’湊成偶數個
11 基本參數(TP-MTI/VFP) 發送,TP-VP用相對格式
00 消息基準值(TP-MR) 0
0D 目標地址數字個數 共13個十進制數(不包括91和‘F’)
91 目標地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 96 03 29 30 F0 目標地址(TP-DA) 8613693092030,補‘F’湊成偶數個
00 協議標識(TP-PID) 是普通GSM類型,點到點方式
00 用戶信息編碼方式(TP-DCS) 7-bit編碼
00 有效期(TP-VP) 5分鐘
06 用戶信息長度(TP-UDL) 實際長度6個字節
C8 32 9B FD 0E 01 用戶信息(TP-UD) 「Hello!」編碼
轉自bbs.sendsms.cncode