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