linux用java socket与c的socket通信乱码问题
大致架构是这样的,用java写socket客户端发起报文到c写的socket服务端,服务端再调用动态链接库文件xxx.so内的方法访问aix核心系统再返回数据.机器1:r...
大致架构是这样的,用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通信这边,这个问题困扰我们很久了啊!希望有经验的仁兄帮忙啊,非常感谢! 展开
机器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通信这边,这个问题困扰我们很久了啊!希望有经验的仁兄帮忙啊,非常感谢! 展开
展开全部
应该就是字符集问题。
首先要确定Linux返回的数据中,采用了那种编码方式,如:GBK。
对应的,在Java一端,将字符串信息转换成byte数组并写入Socket,读出的数据也转换成字符串,
如:
String s = "中文" ;
sockoutputstream.write (s.getBytes ("GBK")) ;
读出来时候,
byte [] buf = sockinputStream.read ()
String s = new String (buf, "GBK") ;
这样就可以了。
首先要确定Linux返回的数据中,采用了那种编码方式,如:GBK。
对应的,在Java一端,将字符串信息转换成byte数组并写入Socket,读出的数据也转换成字符串,
如:
String s = "中文" ;
sockoutputstream.write (s.getBytes ("GBK")) ;
读出来时候,
byte [] buf = sockinputStream.read ()
String s = new String (buf, "GBK") ;
这样就可以了。
展开全部
可以通过调试 检测方案1和方案2下字节流中字节数据是否一致
如果一致 就不是socket的问题 是 java客户端接收数据的问题
如果不一致(不太可能) 可能是java客户端发送数据的问题
本人愚见~!
如果一致 就不是socket的问题 是 java客户端接收数据的问题
如果不一致(不太可能) 可能是java客户端发送数据的问题
本人愚见~!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要么都用Java,要么都用C++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只有中文不正常,是不是编码问题?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
共同关注
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询