短信編碼介紹

收發短消息又分爲三種模式:Block模式、Text模式和PDU模式。使用Block機生產廠家提供驅動支持,這種方法現在很少用了。Text Mode是純文本方式,可使用不同的字符集,從技術上說也可用於發送中文短消息,但國內手機基本上不支持,主要用於歐美地區,也不在本文討論範圍之列。PDU串表面上是一串ASCII碼,由‘0’-‘9’、 ‘A’-‘F’這些數字和字母組成。它們是8位字節的十六進制數,或者BCD碼十進制數。PDU串不僅包含可顯示的消息本身,還包含很多其它信息,如SMS服務中心號碼、目標號碼、回覆號碼、編碼方式和服務時間等。

1.PDU編碼解碼

   在PDU Mode中,可以採用三種編碼方式來對發送的內容進行編碼,它們是7-bit、8-bit和UCS2編碼。7-bit編碼用於發送普通的ASCII字符,它將一串7-bit的字符(最高位爲0)編碼成8-bit的數據,每8個字符可“壓縮”成7個;8-bit編碼通常用於發送數據消息,比如圖片和鈴聲等;而UCS2編碼用於發送Unicode字符。PDU串的用戶信息(TP-UD)段最大容量是140字節,所以在這三種編碼方式下,可以發送的短消息的最大字符數分別是160、140和70。這裏,將一個英文字母、一個漢字和一個數據字節都視爲一個字符。

    需要注意的是,PDU串的用戶信息長度(TP-UDL),在各種編碼方式下意義有所不同。7-bit編碼時,指原始短消息的字符個數,而不是編碼後的字節數。8-bit編碼時,就是字節數。UCS2編碼時,也是字節數,等於原始短消息的字符數的兩倍。

    下面介紹的內容,是在PDU Mode下發送和接收短消息的實現方法。發送和接收的PDU串,結構是不完全相同的。我們先用實際的例子說明PDU串的結構和編排方式。

(1) 發送信息的PDU

中文:向手機13600554267發送中文“歡迎”兩字,格式如下:   0011000B913106504562f7000810046B228FCE英文:向手機13600554267發送英文“hellohello”十字符,格式如下:

0011000B913106504562f70000AA0AE8329BFD4697D9EC37

    對以上的PDU串分析如下表:

分段

含義

說明

00

SMSC地址信息的長度

8613800250500,補‘F’湊成偶數個

11

基本參數(TP-MTI/VFP)

發送,TP-VP用相對格式

00

消息基準值(TP-MR)

0

0B

目標地址數字個數

共13個十進制數(不包括91和‘F’)

91

目標地址格式(TON/NPI)

用國際格式號碼(在前面加‘+’)

3106504562f7

目標地址(TP-DA)

8613851872468,補‘F’湊成偶數個

00

協議標識(TP-PID)

是普通GSM類型,點到點方式

08

用戶信息編碼方式(TP-DCS)

UCS2編碼(00:7-bit編碼)

10

有效期(TP-VP)

短信的有效時間

04

用戶信息長度(TP-UDL)

實際長度4個字節

6B228FCE

用戶信息(TP-UD)

歡迎”

以上內容是對中文信息的表示,需要注意的是“歡迎“兩字,在實際長度計算的時候是4,而非2。因爲UCS2編碼時計算長度爲原始短消息的字符數的兩倍。而發送的”hellohello“英文短信,與其區別在於編碼方式不同,以及長度計算有點差別,請自行分析。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章