Rails + Windows + Mysql(SJIS)

この組合せだとMysqlと日本語のやりとりをするときに文字化けします。「UTF-8を使え」というのが簡単な解決策ですが、しがらみ等あってそうはいかない場合もあると思いますので回避方法を...

どこかのドキュメントに書いてあるのかもしれませんが、探せなかったのでソースを読んでみる。ActiveRecordのconection_adapters/mysql_adapter.rbに

      private
        def connect
          encoding = @config[:encoding]
          if encoding
            @connection.options(Mysql::SET_CHARSET_NAME, encoding) rescue nil
          end
          @connection.real_connect(*@connection_options)
          execute("SET NAMES '#{encoding}'") if encoding
        end

という行があります。@configすなわちdatabase.ymlで設定できるということです。

development:
  adapter: mysql
  database: Depot_development
  host: localhost
  username: scott
  password: tiger
  encoding: sjis

こんな感じでOKです。