とみたです。

On Fri, 30 Apr 2010 18:20:22 +0900
"NARUSE, Yui" <naruse / airemix.jp> wrote:

> # MySQL とか Oracle とかはどうなんだっけ?

pure Ruby 版の MySQL は次のように動きます。
# C版 MySQL は ASCII-8BIT。

1. Ruby から MySQL に文字列を渡す場合

ASCII-8BIT 以外の文字列は MySQL 接続の charset に変換して渡します。
ASCII-8BIT は変換せずにそのまま渡します。

2. MySQL から文字列を取り出す場合

バイナリ以外の文字列は MySQL 接続の charset に対応する encoding として
文字列を取り出します。バイナリ文字列は ASCII-8BIT として取り出します。

MySQL はサーバー側でカラムの charset から接続用の charset に変換するの
で、取り出される文字列の encoding はカラムの charset によらず、接続用
charset に対応する encoding になります。

Ruby encoding と MySQL charset の変換表は内部で持ってます。
http://github.com/tmtm/ruby-mysql/blob/2.9/lib/mysql/charset.rb の CHARSET_ENCODING

-- 
とみたまさひろ <tommy / tmtm.org>
3469 42CC 4D32 F53C AD98  65A5 8C37 FF09 69C1 6040