1

我在尝试通过我的交易应用程序处理交易以及与 FIX 通信时收到此错误。

     java.lang.Error: Invalid UTF-8 Encoding
     at javolution.io.Struct$UTF8String.get(Struct.java:1105)

我使用 UTF-8 编码,它已在我的应用程序的每个 POM 文件中指定。当交易进入应用程序时就会发生这种情况。有没有人遇到过这个错误?

4

2 回答 2

1

更新:

看起来您遇到的是几个现有的错误:在处理 Struct 类中的 UTF8StringsXMLStreamReaderImpl 忽略 xml 编码属性时出错?

将某些字符串传递给 UTF8String 设置方法会导致超出支持 ByteBuffer 中 UTF8String 映射到的内存块的字段边界。这似乎是由于扩展字符串的某些 UTF-8 多字节字符造成的。


您正在处理的数据似乎有问题,或者库中存在错误。看一下UTF8ByteBufferReader 的源代码。从以下方法抛出异常

private int read2(byte b) 抛出 IOException

在该方法的底部,您会看到

throw new CharConversionException("无效的 UTF-8 编码");

我会仔细检查您收到的数据实际上是 UTF-8,因为该库似乎不认为它是......


如果您所做的只是尝试解码 UTF8 流,那么您可以使用常规 Java。网上有很多UTF8 的例子。此外,您可能需要使用 Apache 的BOMInputStream

您也可以只读取字节并定期使用StandardCharsets.UTF_8Charset#decode

于 2012-11-13T06:01:27.847 回答
1

FIX 标准使用 ASCII,而不是 UTF-8。

于 2013-02-01T15:25:57.577 回答