java服务器与c#客户端的字符编码问题

在服务器与客户端交互时,有时候服务器与客户端并不是拿同一种编程语言写的,这时候需要注意字符编码转换的问题。以java服务器和c#客户端为例,此时把c#端接收到的数据用GBK编码表示。

 Encoding encoding = Encoding.GetEncoding("GBK");        //定义GBK编码
            returnMsg = encoding.GetString(memStream.GetBuffer(), 0, memStream.GetBuffer().Length);

 

具体代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;


namespace 客户端与java
{
    class Program
    {
        static string IP = "127.0.0.1";         //定义IP地址
        static int port = 9999;                //端口号
        static void Main(string[] args)
        {
            TcpClient tcp = new TcpClient();
            tcp.Connect(IP, port);              //tcp连接
            MemoryStream memStream = null;         //存取读回的流
            string returnMsg = string.Empty;        
  
            //与服务器建立连接
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//定义套接口
            IPAddress add = IPAddress.Parse(IP);         //提供IP协议
            IPEndPoint endPt = new IPEndPoint(add, port);    //表示网络端点
            socket.Connect(endPt);   //建立网络端点与主机的连接
            //接收数据
            byte[] buffer = new byte[1024];       //返回的数据存入buffer
            int recCount = 0;
            memStream = new MemoryStream();
            //接收返回的字节流
            while ((recCount = socket.Receive(buffer)) > 0)    //接收到的缓冲区的数据大于0时
            {
                memStream.Write(buffer, 0, recCount);      //将缓冲区的数据写入buffer
            }
            Encoding encoding = Encoding.GetEncoding("GBK");        //定义GBK编码
            returnMsg = encoding.GetString(memStream.GetBuffer(), 0, memStream.GetBuffer().Length);  //将内存中的流转为GBK编码格式
            Console.WriteLine(returnMsg);
            Console.ReadLine();
        }
        
    }
}

 

posted @ 2014-12-30 23:02  布拉格的小调  阅读(1011)  评论(0编辑  收藏  举报