手机短信收发有三种方式:Block方式、Text方式和PDU方式,前两种在国内很少使用,PDU格式则普遍支持。内容总长度140个字节(1120位),支持采用三种编码方式:7-bit、8-bit和UCS2编码, 7-bit编码——用于发送普通的ASCII字符,ASCII码表最大到0x7X,最高位为0,总7-bit,实际编码时则可把8-bit的最高位比特使用起来,所以可支持1120/7=160个字符; 8-bit编码——用于发送数据消息,比如图片和铃声、二进制数据等,此类数据无法使用7-bit编码,因为那样会丢掉一位,也不能用下面UCS2编码,因为不符合UNICODE编码检查(范围)。8-bit编码最多支持140个字节数据。 UCS2编码——用于发送Unicode字符,每个中文(韩文、日文),占用2字节,只要短信里包含这些多字节编码文字,那么即使还有英文,英文也需要安装UCS2编码,也占用2字节,所以,最多支持70个中文字(或中英混合短信) 总之,只要含有中文(日文、韩文等),就需要使用多字节编码方式,若编码采用UCS2格式,1中文字占2字节,则可容纳70个中文字,如果是纯英文,将默认使用7bit编码方式(注意是7bit编码),则可容纳(140*8)/7=160个字符。 超过此长度的短信,目前的智能机平台都可以本地实现自动切分成多个短信后再逐一进行发送,长短信因为要涉及到协议头。 如果想通过短信发送非文本信息的数据,建议通过数据端口方式,而不是文本,否则文本短信的默认处理规则(7bit格式)可能会导致数据不完整或丢失。 PDU编码由以下部分组成(顺序连接):
相关短信息收发规范,可参考:GSM 03.38、GSM 03.40和GSM 07.05协议相关章节。 下面是对一组测试代码的结构分析,摘自下文参考资料文档。 示例代码:0891683108506405F011500B 813168934922F60008FF084E2D56FD79FB52A8 结构分析: 注意,其中的TP-DCS,这个字节就是制定PDU数据的解码方式。 |
|