vb与vc中winsock编程遇到的一点小问题,请指教!

llm06 2001-03-26 03:30:00
我用vc的csocket类与vb的winsock进行通信,我遇到这样一个问题,vc的程序:有一个字符串,其中包括了汉字,然后,我用一个字符指针指向这个字符串,把字符指针中的数据发出。vb的程序:把收到的数据还原为字符串,但是,却与发出来的不符合。
简单的说:
CString s="高";
char a[3];
strcpy(a,s);
sock.send(a,3);

vb的程序收到数据后,使用chrb来还原,可是得到了一个"?"
我想肯定是关于字符集的问题,但是我试了几个方法,都没有成功。
这个问题该怎么处理呢?


...全文
185 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
llm06 2001-04-04
  • 打赏
  • 举报
回复
没人知道吗?
cococut 2001-03-27
  • 打赏
  • 举报
回复
发送之前妳把网络字节流转换了没有?
llm06 2001-03-27
  • 打赏
  • 举报
回复
诸位,说白了吧,问题是这样的,是vb里没有办法还原。
比如说:
一个汉字"高",在vc中使用一个字符指针指向它,得到了两个字节,值分别是-72,-33;通过csocket发出,在vb中使用winsock控件接收这个数据后,使用chrb来还原为汉字,但是无法还原。后来发现,vb中chrb只能来还原ascb得到的asc值,而vc中字符指针指向汉字得到的两个字节值,与vb中通过ascb得到的值根本就不一样。可是,非汉字的字符却是相同的。
通过上述的诸位的方法把指针指向一个汉字,得到的值仍然不符合。
是不是vc与vb转换汉字的方式不相同,这到底是怎么回事呢?
谁能告诉我呢?
vb中的ascb函数,在vc里怎么实现呢?
llm06 2001-03-27
  • 打赏
  • 举报
回复
诸位,说白了吧,问题是这样的,是vb里没有办法还原。
比如说:
一个汉字"高",在vc中使用一个字符指针指向它,得到了两个字节,值分别是-72,-33;通过csocket发出,在vb中使用winsock控件接收这个数据后,使用chrb来还原为汉字,但是无法还原。后来发现,vb中chrb只能来还原ascb得到的asc值,而vc中字符指针指向汉字得到的两个字节值,与vb中通过ascb得到的值根本就不一样。可是,非汉字的字符却是相同的。
通过上述的诸位的方法把指针指向一个汉字,得到的值仍然不符合。
是不是vc与vb转换汉字的方式不相同,这到底是怎么回事呢?
谁能告诉我呢?
vb中的ascb函数,在vc里怎么实现呢?
joke100 2001-03-26
  • 打赏
  • 举报
回复
建议使用LPTSTR lstrcpy(
LPTSTR lpString1, // destination buffer
LPCTSTR lpString2 // string
);
代替strcpy或者wstrcpy...
在UNICODE下.char a[3];只存了一个半字符.最后一个结束标志只存了一半...

用l开头的版本对宽窄字符集兼容...
还有
lstrlen
lstrcmpi
lstrcat
等等...



llm06 2001-03-26
  • 打赏
  • 举报
回复
没用的,这样做,vb页没有办法还原
是不是vb和vc中转换汉字的方式不相同?
panda_w 2001-03-26
  • 打赏
  • 举报
回复
发送字符为什么一定要使用UNICODE呢?但是CString s = _T("高");是非常好的习惯,如果你使用的是UNICODE,自然要使用其函数wcscpy和wchar_t变量
panda_w 2001-03-26
  • 打赏
  • 举报
回复
发送字符为什么一定要使用UNICODE呢?但是CString s = _T("高");是非常好的习惯,如果你使用的是UNICODE,自然要使用其函数wcscpy和wchar变量
xyzboat 2001-03-26
  • 打赏
  • 举报
回复
首先确保你的程序里定义了UNICODE宏(使用宽字符集)
CString s = _T("高");//这是习惯,能通过识别字符集而决定采用什么格式
strcpy改为wcscpy

//还有,只有数据转换正确了,才发;数据长度不能想当然的,用sizeof函数处理.

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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