有问题欢迎来这里讨论

25 views
Skip to first unread message

dowell

unread,
Jan 2, 2010, 6:54:21 AM1/2/10
to smgp
如题

wangyd wangyd

unread,
Jan 12, 2010, 9:58:22 PM1/12/10
to smgp
我下行消息时一直出现乱码,收到消息为"屯屯".消息网关基于smgp3.0协议的.请帮忙看一下,谢
谢!

00000000 00 00 00 2A 00 00 00 01 00 00 00 00 36 30 30
30 ...*.... ....6000
00000010 30 34 30 00 73 CA E7 FD C7 EB EB 6E 44 E6 C0 BA 040.s淑?请雗
D
胬?
00000020 68 92 7C D6 02 06 BD CE CE 30 h抾?.轿 ?

00000000 00 00 00 21 80 00 00 01 00 00 00 00 00 00 00 00 ...!
€... ........
00000010 56 50 4C B7 37 2A D1 2B 3C 65 26 DC 44 F8 D4 52 VPL?*? <e&
蹹
R
00000020 30 0

00000000 00 00 00 B8 00 00 00 02 00 01 90 8F 06 00 00
00 ...?... ..
悘....
00000010 00 00 00 00 00 00 00 00 00 30 30 30 30 30 00
00 ........ .00000..
00000020 00 30 30 30 00 00 00 08 00 00 00 00 00 00 00
00 .000.... ........
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 ........ ........
00000040 00 00 00 00 00 00 00 00 00 00 31 30 36 35 39
36 ........ ..106596
00000050 30 30 32 32 34 00 00 00 00 00 00 00 00 00 00 00
00224... ........
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 ........ ........
00000070 00 00 00 00 01 31 38 39 30 38 33 39 31 31 32 37 .....189
08391127
00000080 00 00 00 00 00 00 00 00 00 00 04 CE D2 C3 C7
00 ........ ...我
们.
00000090 00 00 00 00 00 00 00 00 10 00 04 64 78 71 66
00 ........ ...dxqf.
000000A0 12 00 15 31 31 32 30 30 30 30 30 30 30 30 30 30 ...11200
00000000
000000B0 30 30 30 30 31 30 33 32 00001032

00000000 00 00 00 1A 80 00 00 02 00 01 90 8F 00 00 00 13 ....
€... ..
悘....
00000010 10 27 15 04 38 43 00 00 00 00 .'..
8C.. ..

On 1月2日, 下午7时54分, dowell <dowell...@gmail.com> wrote:
> 如题

dowell

unread,
Jan 12, 2010, 11:18:11 PM1/12/10
to smgp
能够跟下完整的submit消息,hex以后的数据,你上面的数据看起来有点乱,我试图分析,感觉有很多值无法对上。

比如:
000000bb000000020000000c0601000000000000000000000030303030300000003030300000000f00000000000000000000000000000000000000000000000000000000000000000000313036323030363800000000000000000000000000313839363734343131313800000000000000000000013138393637343431313138000000000000000000001d323030392d30342d32372031333a35333a33383ab5da35ccf5b6ccd0c500000000000000000010000731323030313335

这样的,我可以拿程序反过来看下。

On 1月13日, 上午10时58分, wangyd wangyd <wwyd...@gmail.com> wrote:
> 我下行消息时一直出现乱码,收到消息为"屯屯".消息网关基于smgp3.0协议的.请帮忙看一下,谢
> 谢!
>
> 00000000 00 00 00 2A 00 00 00 01 00 00 00 00 36 30 30
> 30 ...*.... ....6000
> 00000010 30 34 30 00 73 CA E7 FD C7 EB EB 6E 44 E6 C0 BA 040.s淑?请雗
> D
> 胬?
> 00000020 68 92 7C D6 02 06 BD CE CE 30 h抾?.轿 ?
>
> 00000000 00 00 00 21 80 00 00 01 00 00 00 00 00 00 00 00 ...!

> EURO... ........

> EURO... ..


> 悘....
> 00000010 10 27 15 04 38 43 00 00 00 00 .'..
> 8C.. ..
>
> On 1月2日, 下午7时54分, dowell <dowell...@gmail.com> wrote:
>
>
>

> > 如题- 隐藏被引用文字 -
>
> - 显示引用的文字 -

dowell

unread,
Jan 12, 2010, 11:30:55 PM1/12/10
to smgp

On 1月13日, 下午12时18分, dowell <dowell...@gmail.com> wrote:
> 能够跟下完整的submit消息,hex以后的数据,你上面的数据看起来有点乱,我试图分析,感觉有很多值无法对上。
>
> 比如:

> 000000bb000000020000000c060100000000000000000000003030303030000000303030000-0000f0000000000000000000000000000000000000000000000000000000000000000000031-303632303036380000000000000000000000000031383936373434313131380000000000000-0000000013138393637343431313138000000000000000000001d323030392d30342d323720-31333a35333a33383ab5da35ccf5b6ccd0c500000000000000000010000731323030313335

> > - 显示引用的文字 -- 隐藏被引用文字 -
>
> - 显示引用的文字 -

dowell

unread,
Jan 12, 2010, 11:31:50 PM1/12/10
to smgp
大致分析了下,你msgformat设了8,表示ucs-2编码,但你的内容是:CE D2 C3 C7 是通过gbk编码。
你可以用下面代码进行测试。要么把msgformat设成15,要么将内容转换为ucs-2.按照usc-2编码,"我们"这两个汉字应该为:
0x62114eec

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.UnsupportedEncodingException;


public class DecodeContent {
public static void main(String[] args) throws
UnsupportedEncodingException {
String hexstr="CED2C3C7";
byte[] bytest = rstr(hexstr);
System.out.println("UCS-2:"+new String(bytest,"iso-10646-ucs-2"));
System.out.println("GBK:"+new String(bytest,"gbk"));
System.out.println("UCS-2 HEX:"+rhex("我们".getBytes("iso-10646-
ucs-2")));

}
private static byte[] rstr(String hex) {
int length = hex.length();
byte[] bHex = new byte[length/2];
String temp = null;
int t = 0;
for (int i=0; i<length; i++) {
temp = "" + hex.charAt(i) + hex.charAt(++i);
bHex[t++] = (byte)Integer.parseInt(temp, 16);
}
return bHex;
}
private static String rhex(byte[] in) {
DataInputStream data = new DataInputStream(new ByteArrayInputStream
(in));
String str = "";
try {
for (int j = 0; j < in.length; j++) {
String tmp = Integer.toHexString(data.readUnsignedByte());
if (tmp.length() == 1) {
tmp = "0" + tmp;
}
str = str + tmp;
}
} catch (Exception ex) {
}
return str;
}
}

On 1月13日, 上午10时58分, wangyd wangyd <wwyd...@gmail.com> wrote:

> 我下行消息时一直出现乱码,收到消息为"屯屯".消息网关基于smgp3.0协议的.请帮忙看一下,谢
> 谢!
>
> 00000000 00 00 00 2A 00 00 00 01 00 00 00 00 36 30 30
> 30 ...*.... ....6000
> 00000010 30 34 30 00 73 CA E7 FD C7 EB EB 6E 44 E6 C0 BA 040.s淑?请雗
> D
> 胬?
> 00000020 68 92 7C D6 02 06 BD CE CE 30 h抾?.轿 ?
>
> 00000000 00 00 00 21 80 00 00 01 00 00 00 00 00 00 00 00 ...!

> EURO... ........

> EURO... ..


> 悘....
> 00000010 10 27 15 04 38 43 00 00 00 00 .'..
> 8C.. ..
>
> On 1月2日, 下午7时54分, dowell <dowell...@gmail.com> wrote:
>
>
>

wangyd wangyd

unread,
Jan 13, 2010, 12:17:18 AM1/13/10
to smgp
非常感谢,问题解决了.是由于短信网关那不支持unicode编码.改为msgType为gbk的就可以了.可否留下你的msn或QQ?

> > - 显示引用的文字 -- 隐藏被引用文字 -
>
> - 显示引用的文字 -

Message has been deleted

dowell

unread,
Jan 13, 2010, 12:42:11 AM1/13/10
to smgp
有问题这里提
Reply all
Reply to author
Forward
0 new messages