Ruby で文字コードを取得する

前のラボで機器データ解析用に作っておいたプログラムが、Mac OS X を 10.9 (Marvericks) にアップグレードしたところ動作しなくなったという報告を受け取った。どうやら、OS 付属の Ruby が 2.0 にアップデートされたためらしい。

Ruby文字コードを取得したい時、1.8.x では

"A"[0] # 65

とできたのだが、Ruby 1.9 以降では、これは

"A"[0, 1] # "A"

と同じ意味になり、substring の役割を果たすようになっている。代わりに

"A".ord # 65

が用意されたが、これは 1.8.x では使えない。

if String.method_defined?('ord')
   class String
      def ord
         self[0]
      end
   end
end

と自分で定義して ord を使うか、

"A".unpack('C')[0]

とすればよい。