やっぱり文字化けは面倒の巻

 Ruby on Rails で日本語文字を入力すると必ず化けて涙目になった記録。

★ 自分の場合

 何度テーブルを作りなおしてもダメだったのだが、スキーマ自体を作り直したら直った。

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

 character_set_database が latin1 なのはスキーマ作成時の指定が悪かったらしい。

CREATE DATABASE `rails` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

 こうすると、

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+

となり、日本語を入力しても文字化けが起こらなくなった。