MacOSXでRuby1.8.7を使用しています。
レガシーシステムと通信するために、ASCIIをEBCDICエンコーディングに変換するにはどうすればよいですか。jrubyに使用する必要がありますか?
アップグレードすることはできますが、必ずしも問題が解決するわけではありません。
EBCDICには複数のフレーバーがあります(ありがとうIBM!)ので、メインフレームが使用するサブセットを識別する必要があります。
何年も前にメインフレームでプログラミングするときに私が学んだことの1つは、メインフレームのシスオペのいくつかを呼び出して、その頭脳を選ぶことでした。彼らは一日中他のコードセットからEBCDICへの変換を扱い、おそらくその場でそれを行うことができるツールを持っています。
別の方法は、JSONまたはYAMLを解析できるものがあるかどうかを確認することです。テキストをUTF-8に変換し、メインフレームに送信して、翻訳者にUTF-8からEBCDICに変換させます。
コードセットとして EBCDIC-US を指定するRuby iconv ライブラリ(Ruby バージョン 2.0 より前の場合) またはiconv gem (Ruby 2+ の場合) を使用する必要があります。
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"