Quickfix 中文解决

直接下载的Quickfix 是不直接支持Fix 消息里面含有中文的,仔细研究一下只要修改几处地方,就可以成功支持中文。

 

1. quickfix.Field

  /*package*/ int getLength() {
        calculate();
       
        //change  因为不同的编码方式对应的长度字节数不一样,所以应该用字节长度。
        // //return data.length()+1;
        //to
        return (data.getBytes().length+1);
    }

 

 

2. quickfix.mina.message.FIXMessageEncoder

   public void encode(IoSession session, Object message, ProtocolEncoderOutput out)
            throws ProtocolCodecException {
        String fixMessageString;
        if (message instanceof String) {
            fixMessageString = (String) message;
        } else {
            try {
                fixMessageString = ((Message) message).toString();
            } catch (ClassCastException e) {
                throw new ProtocolCodecException("Invalid FIX message object type: "
                        + message.getClass(), e);
            }
        }
       
        //分配字节数,要用字符串字节数组来分配。
       
        //ByteBuffer buffer = ByteBuffer.allocate(fixMessageString.length());
       
        ByteBuffer buffer =null;
        try {
         buffer= ByteBuffer.allocate(fixMessageString.getBytes(charsetEncoding).length);
            buffer.put(fixMessageString.getBytes(charsetEncoding));
         //buffer = ByteBuffer.wrap(fixMessageString.getBytes(charsetEncoding));
         
        } catch (UnsupportedEncodingException e) {
            throw new ProtocolCodecException(e);
        }
        buffer.flip();
        out.write(buffer);
    }

 

3.org.quickfixj.CharsetSupport

    public static String getDefaultCharset() {
        //return "ISO-8859-1";
     //换成中文编码
     return "GBK";
     
    }

 

 

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

houyong999

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值