ruby-pg 0.8.0は一応Ruby 1.9に対応しているものの、エンコーディング周りをきちんとサポートしていなかった。つまり、PGconnが折角エンコーディング情報を持っているのに、クエリの結果セットから取得した文字列はそのエンコーディング情報を反映していない。常にASCII-8BITの文字列が返ってくる。
これは嬉しくない。ASCII-8BITのままでは他のエンコーディングとの結合に支障がある。PGconnのclient encoding情報を覚えておいてforce_encodingするというのもアホみたいだ。そこで、この問題を修正するパッチを書いた。
PostgreSQLが対応しているエンコーディングとRubyのエンコーディングの対応関係は、 PostgreSQL 8.3.7のドキュメント を元に決定した。JOHABはRuby 1.9.1では未対応なのでダミーエンコーディングとした。
なお、実装上の望ましいやり方やエンコーディングのマッピングについて、 成瀬さん と 中田さん に大変お世話になった。それから『 CJKV日中韓越情報処理 』が大変役に立った。持ってて良かった。こういう基礎資料は押さえておけば必ず何かの役に立つよね。ふんふん、多言語情報処理する日本のプログラマは全員持つべき本だ。