在没有 iSeries 的情况下如何处理 EBCDIC CCSID 65535 编码?

在没有 iSeries 的情况下如何处理 EBCDIC CCSID 65535 编码?

这是一个模糊的问题,但我知道 SU 用户也许能够提供帮助。

我有一个来自 iSeries 的文件,其编码为 CCSID 65535(二进制),这基本上意味着它是十六进制编码(EBCDIC)。我想了解该格式的工作原理,因为它似乎可以任意跳进和跳出十六进制编码。例如:

4040404040404040404040F3F040404040404040404040F1        0      04040404040404040404040F8F0F0F3F54040404040F3F4F0404040F3F0F3F8F1F1F7F1F0F8404040404040404040404040404040404040 2009E2D5F9F6F0F0F0F0F0F7           0           04040404040404040404040404040404040404040        

这 40 个是 EBCDIC 空格,我知道这一点,但您会看到文本中也有文字空格。转换发生在奇数字节和偶数字节边界上,查看第一个带有文字空格“F1 0 040”的部分,您会看到一个十六进制编码的“1”(“F1”)、几个文字空格、一个文字“0”、一些空格、再次出现文字“0”,然后是一个十六进制编码的空格。我在这里抓狂了,似乎没有逻辑。

我怀疑格式的“知识”可能以单独的定义保存在 iSeries 中,但我在网上找不到任何权威文档,所以我希望这里的专家可能知道这一切是如何结合在一起的。任何指导都非常感谢!

答案1

您是否检查过此参考资料:摆脱数据转换烦恼

答案2

答案是文件字段定义是关键部分。没有这些信息就无法解码文件。我也找不到任何可以轻易找到的 .Net 库。我认为困难在于你需要:

  • 将 EBCDIC 转换为 ASCII(或者更实际的 ANSI 或 UTF-8)
  • 将十六进制编码字段 (CCSID 65535) 解码为其原始 EBCDIC,然后将其转换
  • 您还需要处理括号双字节 EBCDIC 的 0E(SI)和 0F(SO),并且还需要转换适当的目标字符集(和代码页)

对于看似模糊的要求,却有很多事情要做。

相关内容