mysql_enable_utf8 => 1 で DBIC::UTF8Columns 要らなくなるっぽい
追記です
コメントとブクマで今のところ experimental と書いてあるよ! と教えてもらいました。気づいてなかったです。id:nihen さん、コメントくれた人、ありがとう。
This option is experimental and may change in future versions.
Catalyst::Wiki もこれ書いた方が良さそうですね。書けるのかな。
それにしても、DBD 側でできると良いに越したことないので、早く確定して欲しいですね!
ここから元の内容
lyokato さん経由で woremacx さんに教えてもらった Using Unicode - Catalyst::Wiki に書いてあった
use base 'Catalyst::Model::DBIC::Schema'; __PACKAGE__->config( schema_class => 'MyApp::Schema', connect_info => [ 'dbi:mysql:database:host', 'username', 'password', { AutoCommit => 1, RaiseError => 1, mysql_enable_utf8 => 1, # PostgreSQL: "pg_enable_utf8 => 1" on_connect_do => [ "SET NAMES 'utf8'", # PostgreSQL: "SET client_encoding=UTF8" "SET CHARACTER SET 'utf8'", ], }, ] );
多分、SET NAMES とかはテーブル作るときに CHARACTER SET utf8 とかすれば要らなくなる気がする。
んで、この mysql_enable_utf8 は DBD::mysql にあるので、DBIx::Class 関係なく使えるっぽいです。
When set, a data retrieved from a textual column type (char, varchar, etc) will have the UTF-8 flag turned on if necessary. This enables character semantics on that string. You will also need to ensure that your database / table / column is configured to use UTF8. See Chapter 10 of the mysql manual for details.