Как мне сделать перевод ASCII в EBCDIC на Ruby? - PullRequest
1 голос
/ 18 января 2011

Я использую Ruby 1.8.7 на Mac OS X.

Как преобразовать кодировку ASCII в кодировку EBCDIC для связи с устаревшей системой. Придется ли мне использовать Джруби?

Ответы [ 2 ]

2 голосов
/ 18 января 2011

Вы можете обновить, но это не обязательно решит проблему.

Существует несколько разновидностей EBCDIC (СПАСИБО, IBM!), Поэтому вам необходимо определить подмножество, используемое вашим мэйнфреймом.

Одна вещь, которую я научился делать при программировании на мэйнфрейме, о, так много лет назад, состояла в том, чтобы вызвать некоторых сисопов мэйнфреймов и выбрать их мозги.Они занимаются преобразованием из других наборов кодов в EBCDIC в течение всего дня и, вероятно, имеют инструмент, который может сделать это на лету.

Альтернативой было бы посмотреть, есть ли у них что-то, что может анализировать JSON или YAML.Преобразуйте ваш текст в UTF-8, отправьте его на мэйнфрейм, пусть его переводчик конвертирует из UTF-8 в EBCDIC.

1 голос
/ 18 января 2011

Вы должны использовать библиотеку Ruby iconv (для версий Ruby до 2.0) или iconv gem (для Ruby 2+), указав EBCDIC-US в качестве кодового набора:

irb(main):001:0> require('iconv')
=> true
irb(main):002:0> x=Iconv.new('EBCDIC-US','ASCII')
=> #<Iconv:0x7fb4274d88d8>
irb(main):003:0> x.iconv("foo")
=> "\206\226\226"
...