【问题标题】:EDIFACT Mapping using JAVA使用 JAVA 的 EDIFACT 映射
【发布时间】:2018-06-19 11:32:39
【问题描述】:

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

我使用的数据是经过编码的,它看起来像这样: UNBIATB11AMS135682300687X

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

谁能帮我解决这个问题?

提前致谢。

【问题讨论】:

  • 您好,请花点时间通过欢迎导览了解您的方法,阅读如何创建minimal reproducible example 示例并查看How to Ask,以增加获得反馈的机会和有用的答案。
  • 你能不能。添加更多详细信息?我们不清楚的问题
  • @aholbreich,是否有任何工具/插件可以将 ascii 分隔符转换为普通分隔符(FS、GS、US ​​--->“:”、“'”、“+”)跨度>

标签: java encoding special-characters edi edifact


【解决方案1】:

您的文字似乎包含0x1D0x1F0x1C 字符。

如果你用+替换0x1D,用:替换0x1F,用0x1C替换',你会得到:

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

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

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

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

【讨论】:

  • 字符在notepad++上显示为FS GS US。我试图了解这种编码类型是什么以及如何处理这个
  • @MarwanFahmi 请记住,EDIFACT 不要求使用特定的分隔符。 UNA 记录可以指定发件人想要用作分隔符的任何字符。
  • 非常感谢您的宝贵时间,@Andreas。因此,为了将此 edifcat 文件映射到结构化的人类可读数据集 (csv),您有什么建议?
  • @MarwanFahmi 您决定 CSV 结构,解析 EDIFACT 行,并将值映射到您的 CSV 结构,例如对于上面的 UNB 记录,您可能决定将 MS 值放在 CSV 的第 10 列中。但这取决于他们如何映射。
  • 查看您的 UNB,注意 语法标识符 设置为 IATBLevel B 的默认分隔符是 @Andreas 声明的控制代码。 unece.org/trade/untdid/texts/d422_d.htm#p5.2
猜你喜欢
  • 2010-11-18
  • 2022-11-01
  • 2018-07-31
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 2010-12-30
  • 2013-05-04
  • 1970-01-01
相关资源
最近更新 更多