我有一个问题,如何处理使用非标准(非 7 位 ASCII)字符集时出现的 HL7v2 编码字符。例如,这是 HL7v2 消息的一部分:
MSH|^~\&|appl|fac|||20240314081500||ORM^O01|10089|P|2.3||||||ISO IR87
PID|||Japan_Test_1||Yamada^Tarou~<esc>$B;3ED<esc>(B^<esc>$BB@O:<esc>(B~<esc>$B$d$^$@<esc>(B^<esc>$B$?$m$&<esc>(B|...
其中“
问题是,既然这里出现了字节0x5E,那么HL7标准是否要求我对其进行转义呢?即我必须在这里使用“\S\”吗?一方面,有人可能会认为 0x5E(^ 的 ASCII 编码)出现了,因此需要转义。另一方面,插入符号(^)没有出现,0x5E只是字符“ま”(ma)的编码的一部分。
换句话说,我需要先解决HL7转义,还是需要先处理字符编码?我尝试搜索 HL7 标准,但没有找到明确的答案。
规范对此保持沉默,因为我们并没有真正意识到这是一个问题。 HL7 消息是字符的序列,而不是字节,并且在解决字符转义之前先解决编码问题
话虽如此......会有一些解析器不理解 JISX0208 编码并陷入困境,因为他们将 if 视为未转义的分隔符,因此您必须检查每个交易方。