首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

.net 与 java 的byte互通解决办法

2012-04-05 
.net 与 java 的byte互通事情是这样的----------------------因为程序需要,要用.net去接一个java的服务端

.net 与 java 的byte互通
事情是这样的
----------------------
因为程序需要,要用.net去接一个java的服务端来通讯

通讯的原理,就是按一定的规则,把 string -> byte[] 传过去

----------------------

遇到问题如下:
(utf-8编码)

我把 "Hello" 搞成byte[] 传过去,对方能判别,英文没问题

我把 "关" 搞成byte[] 传过去,对方【不能识别】,,中文出问题了

我们双方对了一下 byte[] 里的 每个byte

发现

-----------------------------------
【NET】
"Hello" {104,101,108,108,111}
"关" {229,133,179}
-----------------------------------
【java】
"Hello" {104,101,108,108,111}
"关" {-27,-123,-77}
-----------------------------------


查了下资料,,
------------------
c#中字节byte的范围是0~255;
java中字节byte的范围是-128~127:
------------------

OH,,My god。。

如何是好,,
我这边.net 一定要按 java 那种byte[] 过去的,否则接不了,有招吗?大侠们



附代码(net)
------------------------
string str = "关";
byte[] BB = Encoding.GetEncoding("utf-8").GetBytes(str);
------------------------

[解决办法]
我测试了一下,貌似啥毛病都没有啊
JDK7,VS2010(中文),Win7(x86)(中文)
下面是测试代码啊

Java code
    public static void main(String[] args) throws IOException  {        // TODO Auto-generated method stub        ServerSocket server=new ServerSocket(5678);                    Socket client=server.accept();            byte[] b="关".getBytes("utf8");            client.getOutputStream().write(b);            //            byte[] b="Hello".getBytes("utf8");//            client.getOutputStream().write(b);                        client.close();                        } 

热点排行