如何在Ruby中执行ASCII到EBCDIC的转换?

时间:2011-01-17 21:54:21

标签: ruby encoding jruby ebcdic

我在Mac OS X上使用Ruby 1.8.7。

如何将ASCII转换为EBCDIC编码,以便与旧系统进行通信。 我是否必须使用jruby?

2 个答案:

答案 0 :(得分:2)

您可以升级,但这不一定能解决问题。

EBCDIC有多种口味(谢谢IBM!),因此您需要确定大型机使用的子集。

多年以前,我在大型机上编程时学到的一件事就是调用一些主机系统,然后挑选他们的大脑。它们整天处理从其他代码集到EBCDIC的转换,并且可能有一个可以即时执行的工具。

另一种方法是查看它们是否具有可以解析JSON或YAML的内容。将文本转换为UTF-8,将其发送到大型机,让其翻译器从UTF-8转换为EBCDIC。

答案 1 :(得分:1)

你应该使用Ruby iconv library(对于2.0之前的Ruby版本)或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"