From: KUBO Takehiro Date: 2010-05-02T00:35:22+09:00 Subject: [ruby-dev:41127] Re: Rails3 M17N 2010/4/30 NARUSE, Yui : > # MySQL とか Oracle とかはどうなんだっけ? Oracle に関していうと、るびまの「Ruby M17N の設計と実装」の IO の章(*1) を参考にした実装になっています。 Oracle の NLS_LANG と ruby のエンコーディングの対応表(*2)を引いて、 Oracle 側のエンコーディング(外部エンコーディングに対応)を決めて、 1. ruby の String を Oracle の関数に渡すとき ruby の String のエンコーディングを Oracle 側のエンコーディングに変換 してから Oracle の関数に渡す。ただし、RAW 型、BLOB 型のときは、エンコー ディングの変換は行なわない。 2. Oracle から取得した文字列を ruby に返すとき 内部エンコーディングが設定されてないときは、Oracle 側のエンコーディン グを文字列に設定する。内部エンコーディングが設定されているときは、 Oracle 側のエンコーディングから内部エンコーディングに変換した上で ruby 側に返す。ただし、RAW 型、BLOB 型のときは内部エンコーディングの値にか かわらず無条件にASCII-8BIT を設定し、文字コードの変換は行わない。 *1 http://jp.rubyist.net/magazine/?0025-Ruby19_m17n#l63 *2 http://ruby-oci8.rubyforge.org/svn/trunk/ruby-oci8/lib/oci8/encoding.yml