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);这样的话接受客户端信息时会出现乱码。 展开
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);这样的话接受客户端信息时会出现乱码。 展开
3个回答
展开全部
char 是ASCII码吧,2010应该默认是unicode码。这个应该是编码转换的问题。
应该用w_char吧。然后注意用_T()转换
应该用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.
没有问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
考虑到诸多因素,SOCKET通信一般使用的是ASCII编码,因此,使用char数组来接收SOCKET传来的字符是没有什么问题的。
但是,从char数组到CString的转换,需要看你工程里的UNICODE宏定义。如果你使用了UNICODE,那么,就必须有一个窄字符串到宽字符串的转换,一般使用宏A2T就行了。如:
CString sTemp = A2T(szTemp);
同样,在send的时候也要注意这个问题,需要T2A.
但是,从char数组到CString的转换,需要看你工程里的UNICODE宏定义。如果你使用了UNICODE,那么,就必须有一个窄字符串到宽字符串的转换,一般使用宏A2T就行了。如:
CString sTemp = A2T(szTemp);
同样,在send的时候也要注意这个问题,需要T2A.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询