我在尝试通过我的交易应用程序处理交易以及与 FIX 通信时收到此错误。
java.lang.Error: Invalid UTF-8 Encoding
at javolution.io.Struct$UTF8String.get(Struct.java:1105)
我使用 UTF-8 编码,它已在我的应用程序的每个 POM 文件中指定。当交易进入应用程序时就会发生这种情况。有没有人遇到过这个错误?
我在尝试通过我的交易应用程序处理交易以及与 FIX 通信时收到此错误。
java.lang.Error: Invalid UTF-8 Encoding
at javolution.io.Struct$UTF8String.get(Struct.java:1105)
我使用 UTF-8 编码,它已在我的应用程序的每个 POM 文件中指定。当交易进入应用程序时就会发生这种情况。有没有人遇到过这个错误?
看起来您遇到的是几个现有的错误:在处理 Struct 类中的 UTF8Strings和XMLStreamReaderImpl 忽略 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_8的Charset#decode
FIX 标准使用 ASCII,而不是 UTF-8。