Ну, может быть, поддержка EBCDIC есть только в Linux 'glibc.

ользую Ruby 1.8.7 на Mac OS X.

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

 Surya17 янв. 2011 г., 23:20
@ Марк, почему у тебя болит голова?
 the Tin Man17 янв. 2011 г., 23:08
Первое предложение будет использоватьiconvза исключением того, что iconv не поддерживает EBCDIC; Это было проблемой в течение многих лет. : - /
 Mark Ransom17 янв. 2011 г., 23:26
Сопоставление технологий слишком радикально. Я шутил, конечно.
 zetetic18 янв. 2011 г., 01:02
EBCDIC? Теперь есть аббревиатура, которую я не слышал долгое время.
 Mark Ransom17 янв. 2011 г., 23:06
Ты делаешь мою голову болит!

Ответы на вопрос(2)

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

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

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

 user233881612 апр. 2014 г., 13:31
Аминь "(СПАСИБО, IBM!)". Без работы и опыта IBM по разработке EBCDIC мы могли бы застрять в его современном 7-битном ASCII, кто знает, как долго. И опыт помог с их вкладом в Консорциум Unicode с самого начала организации. Мы, вероятно, были бы в гораздо худшей форме сегодня. Но ты прав; возможно, необходимо определить CCSID EBCDIC для соответствующих пользователей мэйнфреймов и сделать это правильно, даже если в этом нет необходимости. (Хотя это может не быть «мэйнфрейм», идея все еще актуальна.) А если нет, то UTF-8 является хорошим посредником.
 mckenzm29 мар. 2015 г., 17:56
В python это так же просто, как «123» .decode («UTF-8»). Encode («IBM500») или любой другой вариант, который вам нужен, обычно 037, 500 International популярны, потому что они широко приняты для поддержки юникода DB2. Так почему же это не в Encoding.aliases для рубина?

Вы должны использовать 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"
 Martin v. Löwis17 янв. 2011 г., 23:21
Можете ли вы узнать, какую версию iconv вы используете?
 Martin v. Löwis17 янв. 2011 г., 23:28
Ну, может быть, поддержка EBCDIC есть только в Linux 'glibc.
 Surya17 янв. 2011 г., 23:25
я использую 1.11. Похоже, need для обновления
 Surya17 янв. 2011 г., 23:18
Кажется, я получаю "Iconv :: InvalidEncoding: неверная кодировка (" ascii "," EBCDIC-US ")". На OSX

Ваш ответ на вопрос