Apache camel Apache Camel:由于\u000B符号,读取HL7 v2文件失败

Apache camel Apache Camel:由于\u000B符号,读取HL7 v2文件失败,apache-camel,hl7-v2,Apache Camel,Hl7 V2,在使用HL7 v2文件之后,我尝试将它们封送到HAPI HL7对象中。路线样本为: from("file:C:\\routes\\in").unmarshal(new HL7DataFormat()).log("Success!"); 不幸的是,我得到了一个例外: ca.uhn.hl7v2.parser.EncodingNotSupportedException: Determine encoding for message. The following is the first 50 cha

在使用HL7 v2文件之后,我尝试将它们封送到HAPI HL7对象中。路线样本为:

from("file:C:\\routes\\in").unmarshal(new HL7DataFormat()).log("Success!");
不幸的是,我得到了一个例外:

ca.uhn.hl7v2.parser.EncodingNotSupportedException: Determine encoding for message. The following is the first 50 chars of the message for reference, although this may not be where the issue is: MSH|^~\&|...
我发现每个被解析的消息前面都有\u000B符号,这导致解析器无法找到“MSH”头

当然,我可以用简单的字符串操作修复它,如:

from("file:C:\\routes\\in")
            .convertBodyTo(String.class)
            .transform().simple("${in.body.trim()}")
            .unmarshal(new HL7DataFormat())
            .log("Success!");
但在我看来,这并不是最好的解决办法。我发现,如果使用MLLP协议,消息前面会有相同的符号,HL7编解码器应该处理它

问题:
是否可以使用文件或FTP组件的HL7Codec之类的东西来处理转换为字符串/解析?

\u000B是标准HL7消息最小下层协议的起始字节(标记)。消息通常应以字节\u001C\u000D结束(结束标记)


虽然您可以讨论MLLP对文件的需求,根据Apache Camel的文档,在ASCII和Linux环境之外,您应该能够获得纯HL7消息字符串。HL7 v2消息是二进制格式而不是文本格式,因此不要对其应用文本函数。2 MLLP包装器应该已经由网络层处理。网络层使用它来确定消息的开始和结束位置。因此,它应该剥离为您的磁盘格式已经存在。如果没有,请修复您的网络层,但我不使用MLLP协议进行传输。我使用File/FTP作为传输协议。我想将HL7Codec应用于文件/FTP组件。这可能吗?1中提到了一些磁盘上的文件编码,但我不知道在哪里。2我不知道Apache Camel可以/不能做什么。也许,在进一步处理之前,要求3从文件中删除一个字节对任何编程语言来说都不应该是一个大的工程问题,这一点很好。也许骆驼支持论坛是一个更好的提问场所。萨克斯!