Amazon RDS をデータベースとして使用して、Heroku で Rails (2.3.5) アプリの新しいインスタンスをセットアップしています。すべてに UTF-8 を使用したいと思います。RDS はデフォルトで UTF-8 ではないため、新しいパラメーター グループを設定し、基本的に this に従って、そのパラメーター グループを使用するようにデータベースを切り替えました。うまくいったようです:
SHOW VARIABLES LIKE '%character%';
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 /rdsdbbin/mysql-5.1.50.R3/share/mysql/charsets/
さらに、RDS データベースを使用するように Heroku を正常にセットアップしました。rake db:migrate の後、すべてが良さそうです:
CREATE TABLE `comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`commentable_id` int(11) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
`content` text COLLATE utf8_unicode_ci,
`child_count` int(11) DEFAULT '0',
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `commentable_id` (`commentable_id`),
KEY `index_comments_on_community_id` (`community_id`),
KEY `parent_id` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
マークアップには、次のものを含めました。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
また、私は設定しました:
production:
encoding: utf8
collation: utf8_general_ci
... database.yml では、RDS に接続するときに Heroku が独自の構成を行っているように見えるため、この場合、これらの設定を尊重するために何かが行われているとは確信していません。
今、アプリのフォームに「Úbe®ƒåiL」というコメントを入力しましたが、データベースには「Úbe®Æ'ã¥iL」があります
Rails がそれをデータベースからロードし直してページにレンダリングすると、問題ないように見えます。Sequel Pro で RDS データベースを見ると、エンコーディングを「UTF-8 Unicode via Latin 1」に設定すると問題ないようです。つまり、Latin-1 がどこかに忍び込んでいるようです。
ローカルの MySQL データベースに接続すると、開発中にすべてが機能します。
誰かが以前にこれを行ったに違いありませんよね?私は何が欠けていますか?