网络数据传送的编码问题?
我从网络上接收数据,对方的数据说是用UTF-8字符集。
我接收数据时先定义字符串char r[12];
如果,对方发送ASCII字符集的内容,我可以收到正确的结果
如:对方发送字符串"1234"
我收到1234并可显示。此时字符串r中十进制的值等于r[0]=49,r[1]=50,r[2]=51,r[3]=52,r[4]=0;
如果,对方发送汉字的话,我收到的事乱码
如,对方发送"你好"
此时字符串r中的十机制值是r[0]=-28,r[1]=-67,r[2]=-96,r[3]=-27,r[4]=-91,
r[5]=-67,r[6]=0;
而我另外写了一个程序测试,在这个程序中我将字符换"你好"付值给变量
char r[12];
此时字符串r中十进制的值r[0]=-60,r[1]=-29,r[2]=-70,r[3]=-61
请教各位,帮我指点一下,或以其讨论一下。
问题点数:100、回复次数:7Top
1 楼yhqs540(Reich)回复于 2004-08-01 15:18:22 得分 20
可以使用unicode把发送和接收数据统一编码
编码的程序往上到处都有Top
2 楼phoenixandlinda(会抄程序)回复于 2004-08-01 15:31:04 得分 20
UTF-8是宽字符数据,你应该收到数据以后主动将其转换为多字节数据才可以正常显示。
a wide-character string to a character string :
WideCharToMultiByte (**)
a wide-character string to a character string :
MultiByteToWideChar(**)Top
3 楼blestrabbit(这个兔子有点稚气有点呆有点可爱有点帅)回复于 2004-08-02 08:39:11 得分 0
但是,我显示英文字母还是可以正确显示的。为什么?Top
4 楼fzd999(花差花差)回复于 2004-08-02 08:44:24 得分 40
这是一个Unicode的问题,应该把收到的数据转换成Unicode之后才能正常显示Top
5 楼lanstar200(待我景天大侠斩妖除魔)回复于 2004-08-02 08:50:17 得分 20
顯示中文要轉成UnicodeTop
6 楼blestrabbit(这个兔子有点稚气有点呆有点可爱有点帅)回复于 2004-08-02 11:37:06 得分 0
使用什么函数可以实现呢?
我在网上看到Unicode是一种编码格则,在具体实现的时候用UTF-8。
那么用什么函数可以正常显示中文呢?Top
7 楼blestrabbit(这个兔子有点稚气有点呆有点可爱有点帅)回复于 2004-08-04 18:01:09 得分 0
我这个问题是在做msn messager的sniffer时候出现的,请教大家一下,解决了乱码问题就可以完成了。
Top




