最近在与某银行合作,要求我方定时发送对账文件给银行,方式为socket。流程为:我方发送请求报文(xml),银行接收后应答“0000”,表示接收文件确认,我方开始发送文件,格式为
****|****|****
****|****|****|****|****|****
接口传输,最终会转化为字符串或者byte数组。另外,规定单次发送的文件长度不得超过4096字节,所以分批次发送。附上时序图

银行要求我方发送的请求报文为utf-8编码,文件为gbk,所以需要转码。目前我方服务搭建在Linux上,默认编码格式为utf-8。
问题:银行反馈我方发送的文件为utf-8,我看代码中已经是做了转码的,难道是有什么地方疏忽了么

?还请大神帮忙答疑



附上部分代码:
// 组装发送银行的请求信息
buildMessage = CenterControll.getImplementOfRequest(requestType);
message = buildMessage.build(replyMessage, fileName, fileType, begainIndex, fileLen, endIndex, dataPackage, path,privateKey);
settleLogger.settlePrintData("发送的报文"+message);
System.out.println("请求:"+message);
if (message.equals("stop")){
continueCommunicate = false;
break;
}
if(message.indexOf("X1.0")==0){//请求报文与应答报文以X1.0开头
writer = new OutputStreamWriter(socket.getOutputStream(),"UTF-8");
writer.write(message);
if(0 != requestType.indexOf("send")){
writer.write("0000");
}
}else{
writer = new OutputStreamWriter(socket.getOutputStream(),"GBK");
writer.write(message);
}
writer.flush();