linux用java socket与c的socket通信乱码问题

大哥大姐们哪位知道,linux用java socket与c的socket通信乱码问题?

大致架构是这样的,用java写socket客户端发起报文到c写的socket服务端,服务端再调用动态链接库文件xxx.so内的方法访问aix核心系统再返回数据.

机器1: redhat enterprise 5.1
机器2: aix
机器3: windows xp sp3系统

1.
c写的socket服务部署在机器1
java写的socket客户端部署在机器3上

返回数据正常且无中文乱码

2.
c写的socket服务部署在机器1
java写的socket客户端部署在机器1上
返回数据正常,但中文全是"????"的乱码
socket通信用的是字节流,且编码一致

注:c写的socket服务调动态链接库经过测试的,无任何异常,问题应该是出现java与c的socket通信这边,这个问题困扰我们很久了啊!希望有经验的仁兄帮忙啊,非常感谢!
最新回答
小晴日记

2024-05-11 01:07:22

应该就是字符集问题。
首先要确定Linux返回的数据中,采用了那种编码方式,如:GBK。
对应的,在Java一端,将字符串信息转换成byte数组并写入Socket,读出的数据也转换成字符串,
如:
String s = "中文" ;
sockoutputstream.write (s.getBytes ("GBK")) ;

读出来时候,
byte [] buf = sockinputStream.read ()

String s = new String (buf, "GBK") ;

这样就可以了。
北橙旧梦

2024-05-11 00:27:44

可以通过调试 检测方案1和方案2下字节流中字节数据是否一致

如果一致 就不是socket的问题 是 java客户端接收数据的问题
如果不一致(不太可能) 可能是java客户端发送数据的问题

本人愚见~!
遗心遗梦遗幸福

2024-05-11 00:25:36

要么都用Java,要么都用C++
朕就是萌萌哒

2024-05-11 00:24:08

只有中文不正常,是不是编码问题?
酒爷

2024-05-11 00:01:17

共同关注