Mac OS XでRuby 1.8.7を使用しています。RubyでASCIIからEBCDICへの変換を行うにはどうしたらいいですか?
ASCIIをEBCDICエンコーディングに変換して、レガシーシステムと通信する方法を教えてください。 jrubyに使用する必要がありますか?
Mac OS XでRuby 1.8.7を使用しています。RubyでASCIIからEBCDICへの変換を行うにはどうしたらいいですか?
ASCIIをEBCDICエンコーディングに変換して、レガシーシステムと通信する方法を教えてください。 jrubyに使用する必要がありますか?
あなたはコードセットとしてEBCDIC-USを指定する(2 + Ruby用)ルビーiconv library(2.0の前にRuby用のバージョン)またはiconv gemを使用する必要があります。
は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"
あなたがアップグレードすることができますが、それは必ずしもありません問題を解く。
EBCDIC(THANK YOU IBM!)のフレーバーは複数ありますので、メインフレームで使用するサブセットを特定する必要があります。
メインフレームでプログラミングするときに私が学んだことの一つは、何年も前のことですが、メインフレームのシステム担当者を呼び出して頭脳を選ぶことでした。彼らは一日中他のコードセットからEBCDICへの変換を扱い、恐らくそれを実行できるツールを持っています。
代わりに、JSONまたはYAMLを解析できるものがあるかどうかを確認することもできます。テキストをUTF-8に変換し、メインフレームに送信し、翻訳者がUTF-8からEBCDICに変換できるようにします。
Amen to "(ありがとう、IBM!)" EBCDICを開発したIBMの仕事と経験がなければ、私たちは現代の7ビットASCIIをどれくらいの長さで知っているのでしょうか。そしてその経験は、組織の初めからユニコードコンソーシアムへの貢献に貢献しました。私たちは今日、はるかに悪い形になるだろう。しかし、あなたは正しい。関連するメインフレーム・ユーザーのEBCDIC CCSIDを識別し、必要でない場合でも実行することが必要な場合があります。 (「メインフレーム」ではないかもしれませんが、そのアイデアは依然として関連しています)。もしそうでなければ、UTF-8は良い仲介者です。 – user2338816
Pythonでは、 "123" .decode( "UTF-8")、encode( "IBM500")など、必要なフレーバーは通常037、500と同じくらい簡単です。インターナショナルは、DB2ユニコードサポート。それではなぜこれはEncodingではないのですか? – mckenzm
あなたは私の頭を傷つけるよ! –
最初の提案は、iconvがEBCDICをサポートしていないことを除いて、 'iconv'を使うことです。これは何年もの間問題となっています。 : -/ –
@マークなぜURの頭を傷つける質問ですか? – Surya