使用JAVA的EDIFACT映射

使用JAVA的EDIFACT映射,java,encoding,special-characters,edi,edifact,Java,Encoding,Special Characters,Edi,Edifact,我正在尝试使用java映射EDIFACT文件 我使用的数据是经过编码的,如下所示: Unbitb11am135682300687x 我期待这种格式: UNH+1+SBRRES:09:3:1A' 有人能帮我弄清楚吗 提前感谢。您的文本似乎包含0x1D、0x1F和0x1C字符 如果将0x1D替换为+,0x1F替换为:,0x1C替换为,,则会得到: UNB+IATB:1+1A+MS+13568:230+0687+++X' 您可能不应该替换,而应该简单地使用那些不可显示的字符进行解析,但是如果您需要可显

我正在尝试使用java映射EDIFACT文件

我使用的数据是经过编码的,如下所示: Unbitb11am135682300687x

我期待这种格式: UNH+1+SBRRES:09:3:1A'

有人能帮我弄清楚吗


提前感谢。

您的文本似乎包含
0x1D
0x1F
0x1C
字符

如果将
0x1D
替换为
+
0x1F
替换为
0x1C
替换为
,则会得到:

UNB+IATB:1+1A+MS+13568:230+0687+++X'

您可能不应该替换,而应该简单地使用那些不可显示的字符进行解析,但是如果您需要可显示的字符,您可以这样做:

s = s.replace('\u001D', '+').replace('\u001F', ':').replace('\u001C', '\'');

或者替换为数据中没有的字符。这可能就是它们使用这些不可显示字符的原因,因为它们保证不会出现在文本数据中。请记住,计算机不关心字符是否可显示,只有人类才关心。

您的文本似乎包含
0x1D
0x1F
0x1C
字符

如果将
0x1D
替换为
+
0x1F
替换为
0x1C
替换为
,则会得到:

UNB+IATB:1+1A+MS+13568:230+0687+++X'

您可能不应该替换,而应该简单地使用那些不可显示的字符进行解析,但是如果您需要可显示的字符,您可以这样做:

s = s.replace('\u001D', '+').replace('\u001F', ':').replace('\u001C', '\'');

或者替换为数据中没有的字符。这可能就是它们使用这些不可显示字符的原因,因为它们保证不会出现在文本数据中。请记住,计算机不关心角色是否可以显示,只有人类可以显示。

您好,请花点时间浏览欢迎之旅,了解您在这里的方式,阅读如何创建示例,并进行检查,以增加您获得反馈和有用答案的机会。您可以吗。添加更多细节?这个问题困扰着我们unclear@aholbreich,是否有任何工具/插件可以将ascii分隔符转换为普通分隔符(FS、GS、US-->“:”,“,”,“+”)您好,请花点时间浏览欢迎之旅,了解您在这里的做法,阅读如何创建一个示例,并进行检查,以增加您获得反馈和有用答案的机会。请。添加更多细节?这个问题困扰着我们unclear@aholbreich,是否有任何工具/插件可以将ascii分隔符转换为普通分隔符(FS、GS、US-->“:”、“”、“+”)。字符在记事本++上显示为FS GS US。我试图了解这种编码的类型以及如何处理this@MarwanFahmi请记住,EDIFACT不强制使用特定的分隔符。
UNA
记录可以指定发件人想要用作分隔符的任何字符。非常感谢您抽出时间,@Andreas。因此,为了将此edifcat文件映射到结构化的人类可读数据集(csv),您的建议是什么?@MarwanFahmi您决定csv结构,解析EDIFACT行,并将值映射到csv结构,例如,对于上面的
UNB
记录,您可能决定将
MS
值放入CSV的第10列。但这取决于它们的映射方式。查看UNB,注意语法标识符设置为
IATB
B级
的默认分隔符是@Andreas所述的控制代码。字符在记事本++上显示为FS GS US。我试图了解这种编码的类型以及如何处理this@MarwanFahmi请记住,EDIFACT不强制使用特定的分隔符。
UNA
记录可以指定发件人想要用作分隔符的任何字符。非常感谢您抽出时间,@Andreas。因此,为了将此edifcat文件映射到结构化的人类可读数据集(csv),您的建议是什么?@MarwanFahmi您决定csv结构,解析EDIFACT行,并将值映射到csv结构,例如,对于上面的
UNB
记录,您可能决定将
MS
值放入CSV的第10列。但这取决于它们的映射方式。查看UNB,注意语法标识符设置为
IATB
B级
的默认分隔符是@Andreas所述的控制代码。