我们刚刚遇到了一个有趣的问题,我们在单位测试消息转换的响应流程时遇到了一个有趣的问题。该流量的结果是(XML到非XML)二进制输出,该输出放在队列上。我们面临的问题是:此二进制输出消息的长度与非XML数据的长度不匹配,我们将其保存为MFL格式测试程序工具的预期结果。我们的推论是,OSB在内部应用了一些编码,该消息的外观是代理/商业服务中存在的UTF-8。因此,我们更改了预期的UTF-8编码,测试案例成功。但是,在密切调查中,发现UTF-8通过其自己的优点并不能正确地代表所有数据。在哪里有数据丢失的地方,它会以a'代表? ' 象征。因此,即使Junit测试案例通过,我们的比较也是不正确的。

而且,在这两者之间可能有其自己的编码,目前我们无法排除这些编码。

我们可以考虑到这两种解决方案:1。我们可以通过将预期并获得为字节[]来避免任何编码问题来实现比较。但是我们无法在输出中获得确切的消息长度。 2.我们可以将预期和获得的结果编码为UTF-8以外的常见编码格式,但是我们不确定哪个,然后进行比较。

有什么想法帮派吗?

有帮助吗?

解决方案

当您查看UTF-8编码的二进制数据并查看问号(?)时,您可能不会遇到数据丢失。赔率要好得多,您在计算机上安装了不完整的字体集,并且没有字符可以显示文件中指定的特定Unicode字符。您的二进制转换常规的可能性较小的机会是使用缺少字形的角色。

如果二进制文件不匹配,则应该解决此处的问题。奇怪的是,其中一种二进制文件编码字符串序列的结尾,文件序列的末尾,传输序列的结尾或一组将程序混淆为认为在实际存在更多数据时完成的位置)。

要么是,要么您错误地将二进制施加到弦序列中。二进制比较应在字节级别进行,在Java中,您不能假设字节==字符。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top