首页 > 代码库 > java服务器与c#客户端的字符编码问题

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();        }            }}

 

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