求教怎么解决因字符集不同产生的乱码有关问题
求教如何解决因字符集不同产生的乱码问题?
void CServerSocket::OnReceive(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
CAsyncSocket::OnReceive(nErrorCode);
char szTemp[30];
int n = Receive(szTemp , 30 );
szTemp[n] = '\0';
CString sTemp ;
sTemp.Format( _T("收到:%s") , szTemp);
((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.AddString( sTemp );
((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex(
((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1 );
}
------解决方案--------------------
Client与server工程都用同一种字符集编译。多字节或unicode
------解决方案--------------------
如果是字符集问题导致乱码,一个字都不会对,既然前几个字对了,那就是发送或者接收数据不全
试了一下果然如此,“解决方찀쳌理”,中间那两个符号是0x00 0xcc 0xcc 0xcc,就是说只收到了六个字节,第七个字节被赋了0但unicode每个字符是两字节,第八个字节依然是栈中VS调试模式下自动填充的0xcc,结果就这样了
void CServerSocket::OnReceive(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
CAsyncSocket::OnReceive(nErrorCode);
char szTemp[30];
int n = Receive(szTemp , 30 );
szTemp[n] = '\0';
CString sTemp ;
sTemp.Format( _T("收到:%s") , szTemp);
((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.AddString( sTemp );
((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex(
((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1 );
}
------解决方案--------------------
Client与server工程都用同一种字符集编译。多字节或unicode
------解决方案--------------------
如果是字符集问题导致乱码,一个字都不会对,既然前几个字对了,那就是发送或者接收数据不全
试了一下果然如此,“解决方찀쳌理”,中间那两个符号是0x00 0xcc 0xcc 0xcc,就是说只收到了六个字节,第七个字节被赋了0但unicode每个字符是两字节,第八个字节依然是栈中VS调试模式下自动填充的0xcc,结果就这样了