SMS 短信合并问题, 高手帮忙想个办法啊

hx_java 2010-05-17 12:53:04
最近项目中遇到一个问题, 就是接收到客户上行短信时,由于超过70个字符,而被移动网关给分隔, 而我想要的数据是全部内容, 用什么样的方法可以把数据整合到一块去呢?
高手想个办法吧, 最好能清晰一点的,菜鸟在线等..


信息包括三个字段:
content phone_num recive_time

如果是一条短信被分隔成两条信息时, content前面会出现'???'(三个问号), 手机号码肯定相同, 接收时间基本上相差不到一分钟。我想要把两条信息合成一条信息. 请问下我用什么办法可以做到这种效果呢。
...全文
322 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
brilltop 2010-06-09
  • 打赏
  • 举报
回复
这个你就别奢望能解决了!你要是知道为什么你看到的长短信前面不是(01/03)、 (02/03)等长短信标识而是乱码??? ?Ω? .就别想着自己通过程序来解决,只有寻求服务提供商。 除非你想通过简单的时间顺序组合!
hx_java 2010-06-04
  • 打赏
  • 举报
回复

RE:25 , 你的话我听的很清楚,不过意思我就一点不懂了
hx_java 2010-06-04
  • 打赏
  • 举报
回复
RE:#24 , 不瞒你说,这个项目是一个短信咨询中心, 客户发来的短信不止是70个字,一般情况下都是2-3条, 有的多的,我见过5条的 , 我也是没办法了, 才把问题提到这块的..
okgxs 2010-06-03
  • 打赏
  • 举报
回复
统统转换成16进制然后合成,然后再转成字符串
lymmingv 2010-06-01
  • 打赏
  • 举报
回复
应该是用户上行短信到移动,然后转移到你们公司与移动的连接器那里,在这里进行短信分割,我想大概可以在这个地方进行程序判断,给数据加上标识,然后再入库。如果不加标识就入库,估计无法区分。

或者你们公司的通道申请支持长短信,就没有70个字符的限制了。

一般除了微博,用户会上行超过70字符那么长的内容吗。。。
hx_java 2010-06-01
  • 打赏
  • 举报
回复
用户 昵称 2010-05-25
  • 打赏
  • 举报
回复
想办法得到原始的数据,而不是从界面上取得数据,因为超长短信的关键在其内容的前6个字节,里面包括超长短信版本协议,短信唯一标识,第几条、共几条。
hx_java 2010-05-25
  • 打赏
  • 举报
回复
因为移动网管那边使用的协议规定,一条短信只能70个字符, 超过后会自动分成两条短信来处理, 改变协议

是不可能的了, 我想了这么多天也没有什么好的办法.. 哎
hx_java 2010-05-25
  • 打赏
  • 举报
回复
哦, 不过原始数据我得不到, 因为当我最初看到短信的时候, 这些内容就是这样子了,

我们公司的业务是涉及到短信,不过他们用的是HW的MAS, 我也不懂短信怎么就到他MAS里边了, 出来后就这

样, 我最需要的就是把这些数据重新组装起来, 使其恢复原貌..
用户 昵称 2010-05-25
  • 打赏
  • 举报
回复
你这样做是不行的,因为你不是从原始数据得到的。

正确的做法是在程序中,将得到的content直接转成hex数据,如果显示到界面上,因为个别字符无法显示,就显示成了"?",而"?"再转换就只有变成0x3f了。
hx_java 2010-05-25
  • 打赏
  • 举报
回复
3f3f3f30303123f3f3f3f3f30303f2c3f3f3f3f3f39303f2c
hx_java 2010-05-25
  • 打赏
  • 举报
回复

3f3f3f03f3


这些就是你所谓的hex数据? 我是真不懂hex数据是什么东西,在网上搜了一个convert工具,转化后就成这样了,这个怎么看?
用户 昵称 2010-05-22
  • 打赏
  • 举报
回复
你收到的是字符串,打印成hex数据就看出来了。
用户 昵称 2010-05-21
  • 打赏
  • 举报
回复
大哥,你发这些是没用的,要的是原始的hex数据。
hx_java 2010-05-21
  • 打赏
  • 举报
回复

??Ё--------------------------------- 2010-5-19 13:44:48
???--------------------------------- 2010-5-19 13:44:53
???--------------------------------- 2010-5-19 13:44:57
???--------------------------------- 2010-5-19 13:45:01

内容省略,基本格式就是这样子, 还有一种情况是:

?Ω?--------------------------------- 2010-5-19 15:24:48
?Ω?--------------------------------- 2010-5-19 15:24:53
?Ω?--------------------------------- 2010-5-19 15:24:57
?Ω?--------------------------------- 2010-5-19 15:25:01


我想他前面这些字符,应该到手机上的时候显示(1/4)之类的吧, 怎么到这里边就成了乱码了, 怎么感觉没什么规律呢? 到底是两条用‘???’还是‘??Ё’ 还是‘?Ω?’呢?.. 我都快疯了..
hx_java 2010-05-21
  • 打赏
  • 举报
回复
我这边能看到的就只有这些数据, 我拿到的数据就这些...
用户 昵称 2010-05-20
  • 打赏
  • 举报
回复
你没看过短信的规范吧,如果是多条短信,短信内容里有一个标志会置成1,其短信内容的前6个字节会指示出第几条,共几条,前6个字节还能指示出多个多条短信中,哪几个是同一条短信。
hx_java 2010-05-20
  • 打赏
  • 举报
回复
Re:#5
我这边出现的不止是‘???’ 还有‘?Ω?’、‘??Ё’ 目前出现这三种符号, 如果按你的说法的话,这样就要用三种判断方式来做,但是这三种符号,我还不知道是在哪种情况下出现的,有时候是一条短信分三条,有时候是一条短信分4、5条, 这种感觉真的很繁琐..
我也是没办法了,才来这上面请教一下高手,期待有高手能帮想个好点的方法
临摹 2010-05-20
  • 打赏
  • 举报
回复
也遇到过这个问题,被拆分成2条后,两条都会带3个问号,而且被拆成几条后,相差时间大概都在3、4秒左右,顺序没问题,只能判断如果是同一个手机号发过来的,如果前3个字符为“???”的话,根据时间顺序合并短信并去除“???”。
不知道有更好方法没。。
hx_java 2010-05-20
  • 打赏
  • 举报
回复
RE #1
如果等两条一块到的时候,再去分析,理论上可以,但是这样一来,数据库中数据量太大,查询数据的时候消耗时间就太长, 不利于项目的运行.. 还有别的办法么?
加载更多回复(7)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧