C++服务器与C#客户端,利用Sokcet进行通信,如果发送与接收都是英文与数字,OK没有任何问题,如果出现中文刚会出现乱码。下面是客户端接收代码:
System.Net.IPAddress myIP;
System.Net.IPEndPoint myServer;
System.Net.Sockets.Socket connSocket;
System.Net.Sockets.NetworkStream netStream;myIP = IPAddress.Parse(ipString);
myServer = new IPEndPoint(myIP,portInt);
connSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
connSocket.Connect(myServer);
netStream = new NetworkStream(connSocket);
byte[] Rec=new byte[2500];
netStream.Read(Rec, 0, Rec.Length);
尝试过的编码有:
Recstring=System.Text.Encoding.GetEncoding("GB2312").GetString(Rec);
Recstring=System.Text.Encoding.UTF8.GetString(Rec);
Recstring=System.Text.Encoding.GetEncoding(54936).GetString(Rec);
Recstring=System.Text.Encoding.GetEncoding(54936).GetString(Rec);
返回中文全部是乱码,想请都C++一般是采用什么编码,在C#中相应的编码是什么?
请高手指点!!!

解决方案 »

  1.   

    发送地时候用:byte[]bytebuffer =System.Text.Ecoding.UTF8.GetBytes(stryouText)
    编码接收的时候用:string strGetString =System.Text.Ecoding.UTF8.GetString(bytebuffer)
    解码。C++也一定有相应的方法。
      

  2.   

    bearocean(helloworld) ( ) 信誉:100  2006-04-07 10:39:00  得分: 0  
     
     
       发送地时候用:byte[]bytebuffer =System.Text.Ecoding.UTF8.GetBytes(stryouText)
    编码接收的时候用:string strGetString =System.Text.Ecoding.UTF8.GetString(bytebuffer)
    解码。C++也一定有相应的方法。
      
     
    你说的是C#间通信的时候,现在是C++与c#进行通信。所以只使用UTF8不行。
      

  3.   

    在C++里面没有碰到过 不过我上次用Delphi做接口调用WebService的时候也出现了乱码,我Delphi形成的XML传回到Webservice里面有中文就成了乱码了,结果我最后是修改了Delphi里面的内置方法才改过来的,我估计C++里面也应该是这样的问题,但是我实在想不起来改了什么地方,所以也只能说Sorry了
      

  4.   

    发送地时候用:byte[]bytebuffer =System.Text.Ecoding.Default.GetBytes(stryouText)
    编码接收的时候用:string strGetString =System.Text.Ecoding.Default.GetString(bytebuffer)
    解码。