尝试通过我的交易应用程序处理交易以及与FIX通信时,出现此错误。
java.lang.Error: Invalid UTF-8 Encoding
at javolution.io.Struct$UTF8String.get(Struct.java:1105)
我使用UTF-8编码,并且已经在我的应用程序的每个POM文件中指定了它。
有没有人遇到过这个错误?
最佳答案
更新:
看来您遇到了几个现有的错误:Fault in handling of UTF8Strings within the Struct class和XMLStreamReaderImpl ignoring xml encoding attribute?
将某些字符串传递给UTF8String set方法会导致
UTF8String映射到的内存块的字段边界
在备用ByteBuffer中被超过。这似乎是由于
某些UTF-8多字节字符扩展字符串。
似乎您正在处理的数据有问题,或者库中有错误。看一下source code of UTF8ByteBufferReader。从以下方法抛出异常
private int read2(byte b)抛出IOException
在该方法的底部,您将看到
抛出新的CharConversionException(“无效的UTF-8编码”);
我会仔细检查一下您接收到的数据实际上是UTF-8,因为该库似乎并不认为它是...
如果您正在尝试解码UTF8流,则可以使用常规Java。在线上有很多UTF8 examples。另外,您可能需要使用Apache的BOMInputStream。
您也可以只读取字节并定期使用Charset#decode中的StandardCharsets.UTF_8