mysql_enable_utf8 => 1 で DBIC::UTF8Columns 要らなくなるっぽい

追記です

コメントとブクマで今のところ experimental と書いてあるよ! と教えてもらいました。気づいてなかったです。id:nihen さん、コメントくれた人、ありがとう。

This option is experimental and may change in future versions.

Catalyst::Wiki もこれ書いた方が良さそうですね。書けるのかな。

それにしても、DBD 側でできると良いに越したことないので、早く確定して欲しいですね!

追記2

あー、でもこれ、4.00からずっとこのままだ。かれこれ2年くらい experimental なんですがw
Catalyst::Wiki に書いて来ちゃったけどw

ここから元の内容

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 関係なく使えるっぽいです。

DBD::mysql - DATABASE HANDLES

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.