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

    }
}
时间: 2024-12-10 10:38:26

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

JAVA服务器与C#客户端的通信技术调研

JAVA服务器与C#客户端的通信技术调研 研究背景及目的: ARPG项目的需求:需要将现有的服务器从C++的编写平台换为java语言.在对需求进行分析的过程中,发现几点需要研究实现的问题 java与c+语言特性迥异,相比c+ 和c#关系的密切性,java需要对c#风格的一些数据结构和编码格式进行兼容: c#拥有的无符号数据类型如 ushort unint java并不存在,需要对数据类型进行转换: 根据开发需要 客户端现有的通信协议不能更改,所以在java中进行各类型的兼容操作 在项目中底层通信

Java web应用中的常见字符编码问题的解决方法

以下是 Java Web应用的常见编码问题 1. html页面的编码 在web应用中,通常浏览器会根据http header: Content-type的值来决定用什么encoding, 比如遇到Content-Type: text/html; charset=UTF-8, 页面使用的就UTF-8编码. 但是考虑到离线的html(用户可能把页面html保存到本地), 打开离线的html的时候就要在meta指定编码,当然不指定也会有default值,那么不指定有时就可能出现乱码. Meta标签 <

使用thrift实现了Java服务器和nodejs客户端之间的跨平台通信

1. 简单介绍 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的.高效的服务. 2. 下载与安装 Thrift目前最高0.9.2,地址:http://archive.apache.org/dist

String构造方法带字符编码集的作用

java使用的有unicode默认字符编码集(刚搜了下,好像是系统默认的字符编码Charset.defaultCharset()),所以直接new String("测试".getBytes(),charset)是没有意义的. 在读取外部数据的时候,才是使用字符编码集的意义. InputStream is; byte[] b = new byte[is.available()]; is.read(b); String s = new String(b,charset); 如果外部文件不是

MySQL的字符编码体系(二)——数据传输编码

MySQL的字符编码体系可以分成两部分:一部分是关于数据库服务器本身存储数据表时如何管理字符数据的编码:另一部分是关于客户端与数据库服务器传输数据如何编码.上一篇MySQL的字符编码体系(一)--数据存储编码讨论了数据存储编码,本篇讨论数据传输编码. MySQL的客户端可以分为两种:一种就是用C语言写的官方客户端--MySQL命令程序:一种就是平常程序员使用JDBC等connector API写成的客户端.这里只讨论第一种. Windows客户端 MySQL命令程序在Windows和Linux系

java字符编码详解

引用自:http://blog.csdn.net/jerry_bj/article/details/5714745 GBK.GB2312.iso-8859-1之间的区别 GB2312,由中华人民共和国政府制定的,简体汉字编码规范,大陆所有计算机中的简体中文,都使用此种编码格式.目前,我也不知道还有另外的简体汉字编码规范.与此对应的还有BIG5,是中华民国政府制定的,繁体汉字的编码规范,一般应用于海外计算机的繁体中文显示.所谓的繁体中文Windows,简体中文Windows,指的就是采用BIG5和

解如何利用 XML 和 JavaScript Object Notation 在 Ajax 客户端和 Java 服务器之间传输数据。

2006 年 6 月发表 Ajax 核心 API(即所谓的 XMLHttpRequest)的唯一用途就是发送 HTTP 请求,在 Web 浏览器与服务器之间进行数据交换.Web 页面中运行的 JavaScript 代码,可以使用 XMLHttpRequest 将该请求参数提交至服务器端脚本,例如 Servlet 或 JSP 页面.调用的 Servlet/JSP 将发回一个响应,其中包含了一般用于不需刷新整个页面即可更新用户查看内容的数据.此种方法在性能和可用性方面均体现出了独有的优势,因为这将降

字符编码及java中的应用总结小记

这几日突然想搞清楚常见字符编码(ASCII.GBK.UTF.Unicode.ISO-8859-1)的关系及项目中可能存在的相关隐患,网上搜索了一大堆资料,这里结合代码实测,简单做个小结: 浅谈这几种编码的出现 1.1 ASCII 我们知道,在计算机内部,所有信息最终被表示为二进制字符串,每个二进制位有1和0两种表现形式,位是内存最小存储单位,其中8位构成一个字节,字节是数据存储的最小单元,因此8个二进制位即一个字节可以表示256个符号,从00000000-11111111. 上个世纪60年代,美

JAVA基础——字符编码

字符编码 一.概述 InputStreamReader OutputStreamWriter 字符转换流是字符流与字节流转换的桥梁,同时加入了编码转换. 二.编码表的由来 计算机只能识别二进制数据,早期由来是电信号: 为了方便应用计算机,识别各个国家的文字: 就将各个国家的文字用数字来表示,并一一对应,形成一张表,这就是编码表. 三.常见的编码表 注意: 1.Java语言char类型使用的是Unicode 2.UTF-8每一个字节的开头都加有标识头,加完后很容易区分.UTF-8中汉字用3个字节表