VS2010 , socket, unicode, CString字符串连接字符数组出现乱码

代码如下:charszTemp[200];intn=Receive(szTemp,200);szTemp[n]='\0';CStringsTemp;sTemp.Forma... 代码如下:char szTemp[200];
int n = Receive(szTemp, 200);
szTemp[n] = '\0';
CString sTemp;
sTemp.Format(_T("收到: %s") , szTemp);
经分析,发现是字符串转化时出问题,比如下面这个
char sz[] = "asd";
CString s;
s.Format(_T("shoudao收到 : %s"), sz);
AfxMessageBox(s);
这样会出现乱码,请问该怎么解决?
现在问题是wchar_t szTemp[200];
int n = Receive(szTemp, 200);
szTemp[n] = '\0';
CString sTemp;
sTemp.Format(_T("收到: %s") , szTemp);这样的话接受客户端信息时会出现乱码。
展开
 我来答
ssgo66
2012-11-13 · TA获得超过143个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:128万
展开全部
应该是存在字符集转换的问题他,网络传播是最好使用utf8字符集,到客户端的时候在转换成为unicode,这样的话肯定不会有问题
88447821
2012-11-11 · TA获得超过1503个赞
知道小有建树答主
回答量:729
采纳率:100%
帮助的人:298万
展开全部
char 是ASCII码吧,2010应该默认是unicode码。这个应该是编码转换的问题。
应该用w_char吧。然后注意用_T()转换
更多追问追答
追问
wchar_t可以解决字符串转换问题了,可是
wchar_t szTemp[200];
int n = Receive(szTemp, 200);
szTemp[n] = '\0';
CString sTemp;
sTemp.Format(_T("收到: %s") , szTemp);这样还是不行,请问该怎么改
追答
可以用两段CString相加么?刚换了2008测了下。
wchar_t a[100] = _T("123456");
CString Temp = _T("收到:");
CString str(a);
CString Temp1 = Temp + str;
最后Temp1 = 收到:123456.
没有问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
super_admi
推荐于2016-01-03 · TA获得超过1126个赞
知道小有建树答主
回答量:1169
采纳率:0%
帮助的人:921万
展开全部
考虑到诸多因素,SOCKET通信一般使用的是ASCII编码,因此,使用char数组来接收SOCKET传来的字符是没有什么问题的。

但是,从char数组到CString的转换,需要看你工程里的UNICODE宏定义。如果你使用了UNICODE,那么,就必须有一个窄字符串到宽字符串的转换,一般使用宏A2T就行了。如:
CString sTemp = A2T(szTemp);

同样,在send的时候也要注意这个问题,需要T2A.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式