Keep on going, never give up.

手机短信编码与长度限制

手机短信收发有三种方式: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编码由以下部分组成(顺序连接):

  1. 短信息中心地址长度——1字节。
  2. 短信息中心号码类型——1字节。
  3. 短信息中心号码——A设置的长度-B的长度。
  4. 文件头字节——1字节。
  5. 信息类型——1字节。
  6. 被叫号码长度——1字节。
  7. 被叫号码类型——1字节,取值同B。
  8. 被叫号码——长度由F中的数据决定。
  9. 协议标识——1字节。
  10. 数据编码方案——1字节。
  11. 有效期——1字节。
  12. 用户数据长度——1字节。
  13. 用户数据——其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。

相关短信息收发规范,可参考:GSM 03.38、GSM 03.40和GSM 07.05协议相关章节。

下面是对一组测试代码的结构分析,摘自下文参考资料文档。

示例代码:0891683108506405F011500B 813168934922F60008FF084E2D56FD79FB52A8

结构分析:

 注意,其中的TP-DCS,这个字节就是制定PDU数据的解码方式。

参考资料:

http://wenku.baidu.com/view/e43ea6c48bd63186bcebbcf8.html‎

http://blog.csdn.net/renjwjx/article/details/4719045

http://hcq0618.blog.163.com/blog/static/1780903512011113111399984/

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.