注意Encoding格式
StreamReader reader = new StreamReader(respStream,Encoding.Default);

解决方案 »

  1.   

    下面这段是从客户端接收数据
    NetworkStream ns = client.GetStream();
    //读数据包
    byte[] readbyte= new byte[1024];
    int bytesRead = ns.Read(readbyte, 0, readbyte.Length);
    string readstr=Encoding.Unicode.GetString(readbyte,0,bytesRead);
    Console.WriteLine("收到数据包:"+readstr);
      

  2.   

    编码问题,你肯定不是用BigEndianUnicode编码,而是用了ascii
      

  3.   

    你把它改成Encoding.UTF8就得了.
      

  4.   

    看看这个Q&A:我写了两个socket_cli和socket_svr程序,如果cli程序中组个包往server发,只要这个包中没有中文,则server则可以正常显示,同样,server返回的内容中只要没有中文,cli端也可以正常显示。只要一有中文,则必定显示乱码。
    我的cli端发送程序如下:
    Byte[] SendBytes=Encoding.ASCII.GetBytes(SendMessage.Text.ToCharArray());
    s.Send(SendBytes,SendBytes.Length,0);
    Byte[] ReceiveBytes=new Byte[1024];
    int i=s.Receive(ReceiveBytes,ReceiveBytes.Length,0);
    ReceiveMessage.Text=Encoding.ASCII.GetString(ReceiveBytes);
    我的server端接受程序如下:
    Byte[] ReceiveBytes=new Byte[1024];
    int i=saccept.Receive(ReceiveBytes,ReceiveBytes.Length,0);
    ReceiveMessage.Text=Encoding.ASCII.GetString(ReceiveBytes);
    Byte[] byteDateTime=Encoding.ASCII.GetBytes(datetime.ToCharArray());
    Byte[] SendBytes=Encoding.ASCII.GetBytes(SendMessage.Text.ToCharArray());----------------------------
    Byte[] SendBytes=Encoding.ASCII.GetBytes(SendMessage.Text.ToCharArray());
    改成
    System.Text.Encoding.Default.GetBytes试试
    ------------------
    或者
    Encoding myEncoding=Encoding.GetEncoding("GB2312");
    ReceiveMessage.Text=myEncoding.GetBytes(ReceiveBytes);