请教一个socket通信的数据处理有关问题

请问一个socket通信的数据处理问题?
C/C++ code
int main()
{
    WSADATA wsaData;
    SOCKET sServer,sClient;
    char buf[1024];
    WORD version=MAKEWORD(2,0);
    int ret=WSAStartup(version,&wsaData);
    if(ret!=0) 
        cout<<"初始化失败"<<endl;else cout<<"初始化成功\r\n";
    sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(INVALID_SOCKET==sServer)
    {
        WSACleanup();
        return -1;
    }
        SOCKADDR_IN addServ;
        addServ.sin_family=AF_INET;
        addServ.sin_port=htons(5090);
        addServ.sin_addr.S_un.S_addr = INADDR_ANY;
        int retVal=bind(sServer,(LPSOCKADDR)&addServ,sizeof(SOCKADDR));
        if(SOCKET_ERROR==retVal)
        {
            closesocket(sServer);
            WSACleanup();
            cout<<"开始监听失败"<<endl;
            return -1;
        }
        listen(sServer,0);
        sockaddr_in addrClient;
        int addrClientlen=sizeof(addrClient);
        while (1)
        {
            sClient=accept(sServer,(sockaddr FAR *)&addrClient,&addrClientlen);
            if (SOCKET_ERROR==sClient)
            {
                continue;
            }
            ZeroMemory(buf,sizeof(buf));
            retVal=recv(sClient,buf,sizeof(buf),0);
            int couts=0;
            for (int i=0;i<1024;i++)
            {
                if(buf[i]=='\0')
                {
                    break;
                }
                else couts++;
            }
            const char * pData=buf;
            string strResult(buf,couts);
            cout<<"数量为:"<<couts<<endl;
            if(sClient==INVALID_SOCKET)
            {
                closesocket(sClient);
                continue;
            }
            closesocket(sClient);
            cout<<buf;
        }


如果我用c#发过来一个utf-8的中文和英文混合的字符串,我应该怎么处理,cout<<buf才能输出正确的数据,我上面的代码输出的是乱码?请问一般情况下,socket通信采用什么编码的数据进行通信!

------解决方案--------------------
你可以自己定义规则,这就是通讯协议设计的内容了,可以baidu一下。
------解决方案--------------------
windows用的不是utf-8。可以转成ucs-2(utf-16),输出。或者再转回ANSI。
------解决方案--------------------
C/C++ code
windows:utf-8转unicode,然后wcout.

------解决方案--------------------
采取的是数据流,接受到的数据跟你发送时的是一样的!
------解决方案--------------------
探讨

windows用的不是utf-8。可以转成ucs-2(utf-16),输出。或者再转回ANSI。

------解决方案--------------------
探讨

引用:

引用:

windows用的不是utf-8。可以转成ucs-2(utf-16),输出。或者再转回ANSI。

windows 控制台的代码页默认用的不是utf-8。所以显示出来的是乱码

那如果我不进行编码转换,直接传回数据库,也会是乱码?