1

Непонятный вопрос, но, как я знаю, пользователи SU могут помочь с этим.

У меня есть файл из iSeries, который закодирован как CCSID 65535 (двоичный), что в основном означает, что он закодирован в шестнадцатеричном формате (в EBCDIC). Я хотел бы понять, как работает этот формат, поскольку кажется, что он произвольно пропускает шестнадцатеричную кодировку. Например:

4040404040404040404040F3F040404040404040404040F1        0      04040404040404040404040F8F0F0F3F54040404040F3F4F0404040F3F0F3F8F1F1F7F1F0F8404040404040404040404040404040404040 2009E2D5F9F6F0F0F0F0F0F7           0           04040404040404040404040404040404040404040        

Это 40 пробелов EBCDIC, это я знаю, но вы увидите, что в тексте также есть буквальные пробелы. Переходы происходят на нечетных и четных границах байтов, и в первом разделе с литеральными пробелами "F1 0 040" вы увидите шестнадцатеричный код с кодом "1" ("F1"), несколько литеральных пробелов, литерал "0", некоторые больше пробелов, снова литерал '0' и затем шестнадцатеричный кодированный пробел. Срывая мои волосы здесь, кажется, нет логики для этого.

Я подозреваю, что «знания» о формате могут храниться в iSeries в отдельном определении, но я не могу найти какую-либо окончательную документацию в Интернете, поэтому я надеюсь, что гуру может знать, как все это сочетается. Любое руководство с благодарностью получено!

2 ответа2

0

Ответ состоял в том, что именно определение поля файла является критической частью. Нет средств для декодирования файла без этой информации. Похоже, что для этого нет библиотек .Net, которые я могу легко найти. Я думаю, что трудность в том, что вам нужно:

  • преобразовать EBCDIC в ASCII (или, более реалистично, в ANSI или UTF-8)
  • декодировать шестнадцатеричные поля (CCSID 65535) в их родной EBCDIC, а затем преобразовывать их
  • вам также необходимо обработать 0E (SI) и 0F (SO), которые заключают в себе двухбайтовый EBCDIC, а также необходимо преобразовать соответствующий набор символов назначения (и кодовую страницу)

Достаточно много сделать для того, что кажется непонятным требованием.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .