Je configure une nouvelle instance d'une application Rails (2.3.5) sur Heroku en utilisant Amazon RDS comme base de données. Je voudrais utiliser UTF-8 pour tout. Puisque RDS n'est pas UTF-8 par défaut, j'ai mis en place un nouveau groupe de paramètres et ai changé la base de données pour l'utiliser, essentiellement par this. Semble avoir travaillé:Impossible de stocker UTF-8 dans RDS malgré la configuration d'un nouveau groupe de paramètres utilisant Rails sur Heroku
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/
De plus, j'ai réussi à configurer Heroku pour utiliser la base de données RDS. Après rake db: migrate, tout semble bon:
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;
Dans le balisage, j'ai inclus:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Aussi, je me suis fixé:
production:
encoding: utf8
collation: utf8_general_ci
... dans le database.yml, bien que je ne sois pas très confiant que quelque chose soit fait pour honorer n'importe lequel de ces paramètres dans ce cas, car Heroku semble faire sa propre configuration en se connectant à RDS.
Maintenant, j'entrer un commentaire via le formulaire dans l'application: « Úbe® ƒåiL », mais dans la base de données que j'ai « Úbe® Æ'à ¥ iL »
Il semble bien quand Rails le charge en dehors de la base de données et il est rendu à la page, donc quoi qu'il fasse d'une manière, il se défait dans l'autre sens. Si je regarde la base de données RDS dans Sequel Pro, il semble bien si je mets l'encodage à "UTF-8 Unicode via Latin 1". Donc, il semble que Latin-1 se faufile quelque part.
Tout fonctionne en développement, lors de la connexion à une base de données MySQL locale.
Quelqu'un doit avoir déjà fait ça, n'est-ce pas? Qu'est-ce que je rate?
Je voudrais voir si ce qui se passe si je mets à init_connect "SET NAMES utf8", mais je ne peux pas savoir comment faire avec l'interface de ligne de commande RDS. Je renvoie une erreur car elle semble s'étouffer lorsque je définis une valeur avec des espaces. Vous ne savez pas comment le faire. – Lail