400大洋求关于MsChat的汉字nick编码问题?(300分)

  • 主题发起人 主题发起人 DickWu
  • 开始时间 开始时间
D

DickWu

Unregistered / Unconfirmed
GUEST, unregistred user!
我用netxray截取了MsChat发给服务器的信息,发现MsChat把中文的nick
名中的2字节汉字转换成了3字节的编码,看不出其编码方式和算法,请教这里
有没有懂行的,给我个转换算法,我试过了NultiBytetowidechar等API,都没用,
转换前和转换后的代码如下:
转换前:
辣手摧花
转换后:
杈f墜鎽ц姳
 
搞错了,刚才只给了300分,谁回答了我再加100分 :)
 
没人知道吗? 我看好象是UTF-8编码格式,我用OE5做过试验,可是没有该编码的转换算法。不会没人知道吧 :(
 
我对解码比较熟悉,请你把数据的二进制文件转发给我, 我分析看看。
请多试几个nickName。
xiquan@staff.soim.com
 
要先判断mailmessage文的是什末编码,mine or code ,然后用TNMUUProcessor
来解
 
woodstock: 你的信箱我发不出去.
bgying: TNMUUProcessor 不能解unicode的UTF8编码格式
 
to DickWu:你发到 xqzeng@263.net吧。
 
不是吧,
MSCHAT和其它的聊天器是兼容的
应该是用内码代替了中文,就象netscape写html一样。
 
又要俺来动手:(
utf8编码分为1-3字节编码(是对unicode字符集编码,而不是GB2312字符集)
1字节码是用来表示Unicode中U+0000-U+007f的字符(与Ascii完全一致),一字节编码首位为0,
后7位就是相应的Ascii码
2字节码是用来表示Unicode中U+0080-U+07FF的字符(特殊符合等),方式是第一字节首位为110m
第二字节首位为10(特征码0),然后第一字节余下的5位和第二字节余下的6位拼成11位的编码
(正好表示到7ff:))
3字节码用来表示余下的所有字符在U+0800-U+ffff?(好象中间有点扩展的保留字段是不用的)
这其中就包括了所有的汉字,3字节码的特征是第一字节前4位为1110,后两字节前两位均为10
这样剩下的4+6+6=16位刚好表示相应的Unicode字符.
哈哈
就这么简单,有了unicode,在目前的大多系统里就可以直接显示了,至于还有从Unicode->GB2312
按映射关系直接转就可以,目前有N多工具可以干这个
清楚么?
 
接受答案了.
 
后退
顶部