Não é possível armazenar UTF-8 no RDS, apesar de configurar o novo Grupo de Parâmetros usando o Rails no Heroku
Estou configurando uma nova instância de um aplicativo Rails (2.3.5) no Heroku usando o Amazon RDS como banco de dados. Eu gostaria de usar UTF-8 para tudo. Como o RDS não é UTF-8 por padrão, configurei um novo Grupo de Parâmetros e troquei o banco de dados para usá-lo, basicamente poresta. Parece ter funcionado:
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/
Além disso, configurei com sucesso o Heroku para usar o banco de dados RDS. Após o rake db: migrate, tudo fica bem:
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;
Na marcação, incluí:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Além disso, eu configurei:
production:
encoding: utf8
collation: utf8_general_ci
... no database.yml, embora não esteja muito confiante de que algo esteja sendo feito para honrar qualquer uma dessas configurações neste caso, pois o Heroku parece estar fazendo sua própria configuração ao se conectar ao RDS.
Agora, insiro um comentário através do formulário no aplicativo: "Úbe® ƒåiL", mas no banco de dados eu tenho "Úbe® Æ'à ¥ iL"
Parece bom quando o Rails o carrega de volta do banco de dados e é renderizado para a página; portanto, o que quer que esteja fazendo de uma maneira, está desfazendo a outra. Se eu olhar o banco de dados RDS no Sequel Pro, parece ótimo se eu definir a codificação como "UTF-8 Unicode via Latin 1". Parece que o Latin-1 está escondido em algum lugar.
Tudo funciona em desenvolvimento, ao conectar-se a um banco de dados MySQL local.
Alguém deve ter feito isso antes, certo? o que estou perdendo?