当前位置:编程学习 > JAVA >>

[求助]关于java和c的socket通讯报文编码

在某电商做和银行的快捷接入,银行方面要求接收的报文为gb2312编码,报文内容为长度(4位)+报文内容(xml声明和内容),这个长度必需是gb2312编码下的长度,报文发送方法里能把报文转为gb2312;银行收到报文后会截取计算长度,和我传过去的不一致则不做处理原样返回报文。现在的问题是,一旦传参中有两位以上报文我这边就读取返回流超时,无法解析返回内容,但是tcp抓包发现在报这个异常之后银行又发来了返回报文,而两个中文以下没问题——银行那边说我长度计算不对,因为中文较多时候我这边总是间隔发一下空格字符过去。。。。可以看下图,不明白为啥额外发那些空格?还有我该到底怎么转码计算长度,new String(str.getBytes(),"gb2312")算出的长度是错的
--------------------编程问答-------------------- 这里的长度,你是否搞清了银行那边到底对一个汉字(双字节字)定义长度为1还是2呢?
发送代码是你自己写的吗?
如果是你可以查看一下发送的时候有没有带上最后的空格。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,