【转载】[SMS]SMS内容的7bit和UCS2编码方式简介
http://www.cnblogs.com/landlitao/archive/2012/11/24/2786243.html
简介:SMS的编码方式,在3GPP标准的3G TS 23.038和3G TS 23.040有详细的介绍,在本文中,只介绍SMS呈现给用户的内容的编码方式,即7bit和UCS2的编码方式。
1. 总体介绍
在3G TS 23.040中,9.2.2 PDU Type repertoire at SM-TL中,有介绍六种类型的SMS,其中五种都有TP-User-Data的域,这部分的呈现也就是我们看到的SMS内容。
在3G TS 23.038中,4 SMS Data Coding Scheme中,有如下信息:
<1>. SMS的三种编码方式,7bit、8bit和UCS2编码。8bit编码工作中很少遇到,也比较简单,这里不做说明。
<2>. TP-User-Data域的长度是140 octets。这140个字节如果保存7bit信息,最多可以保存160个7bit字符,如果保存UCS2编码,最多可以保存70个字符。
TP-User-Data包含的字符,除了SMS内容外,还有可能在开始的部分包含Header信息(由TP-UDHI来指示是否携带),Header信息占用的部分,是作为SMS控制使用的,不能呈现给用户。
2. 不带Header信息的7bit TP-User-Data
现在我发送一条短消息给手机,内容为I love you.,如果手机接收后是存在SIM卡上的,你可以在SIM的6F3C域(3G TS 11.11 10.5.3 EFsms(Short messages))查看该消息内容:
01 04 81 21 43 F5 00 0B 81 51 28 39 58 71 F1 00 00 21 11 90 50 03 80 00 0B 49 10 FB 6D 2F 83 F2 EF BA 0B
因为是接收到的信息,可以用3G TS 23.040 9.2.2.1 SMS-DELIVER type来帮助解析:
01 04 81 21 43 F5 00 //前面部分,可不关注,有需要的同学自行研究
0B 81 51 28 39 58 71 F1 //TP-OA,发送SMS的手机号码
00 //TP-PID
00 //TP-DCS, 3G TS 23.038里可以了解这里表示7bit编码方式
21 11 90 50 03 80 00 //TP-SCTS, 时间戳
0B //TP-User-Data-Length,这里为11个字符长度,也就是”I love you.”的字符个数
49 10 FB 6D 2F 83 F2 EF BA 0B //TP-User-Data
对TP-User-Data进行解析,7bit是压缩过的,这里要把11个7bit数据提取出来:
0x49:0100 1001 第一个字符,高位添0,就是0100 1001,0x49,7bit编码表为’I’
0x10:0001 0000 第二个字符,就是0010 0000,0x20,7bit编码表为’ ’
0xFB:1111 1011 第三个字符,就是0110 1100,0x6C,7bit编码表为’l’
0x6D:0110 1101 第四个字符,就是0110 1111,0x6F,7bit编码表为’o’
0x2F:0010 1111 第五个字符,就是0111 0110,0x76,7bit编码表为’v’
0x83:1000 0011 第六个字符,就是0110 0101,0x65,7bit编码表为’e’
0xF2:1111 0010 第七个字符,就是0010 0000,0x20,7bit编码表为’ ’
第八个字符,就是0111 1001,0x79,7bit编码表为’y’
0xEF:1110 1111 第九个字符,就是0110 1111,0x6F,7bit编码表为’o’
0xBA:1011 1010 第A个字符,就是0111 0101,0x75,7bit编码表为’u’
0x0B:0000 1011 第B个字符,就是0010 1110,0x2E,7bit编码表为’.’
上面的7bit编码表可以在3G TS 23.038 6.2.1 GSM 7 bit Default Alphabet查阅,看到这里大家就明白了如何把呈现给用户的内容从7bit的PDU数据里解析出来了。
posted on 2017-03-08 17:04 yueyuechen 阅读(1041) 评论(0) 收藏 举报
浙公网安备 33010602011771号