2010-05-21 5 views
1

J'ai une application rails qui fonctionne en utilisant utf-8. Il utilise une base de données mysql, toutes les tables avec le jeu de caractères et le classement par défaut de mysql (c'est-à-dire latin1). Par conséquent, les tables latin1 contiennent des données utf-8. Bien sûr, ce n'est pas bien, mais ça ne m'intéresse pas vraiment. Tout fonctionne bien, car l'encodage de la connexion est aussi latin1 et donc mysql ne convertit pas entre les jeux de caractères.rails, charsets mysql & encodage: binaire

Un seul problème: je besoin d'un index de texte intégral utf-8 pour une table:

mysql> show create table autocompletephrases; 

... AUTO_INCREMENT=310095 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

Mais: Je ne veux pas convertir entre charsets dans mon application rails. Par conséquent, je voudrais savoir si je pouvais mettre config/database.yml

production: 
    adapter: mysql 
>>>> encoding: binary 
    ... 

qui appelle simplement SET NOMS binaire "lors de la connexion à mySQL. Il semble que cela fonctionne pour mon cas, car je suppose que cela force mysql à -not- convertir entre les jeux de caractères (mySQL docs). Est-ce que quelqu'un sait des problèmes à propos de faire cela? Des effets secondaires?

Ou avez-vous d'autres suggestions? Mais je voudrais éviter de convertir toute ma base de données en utf-8.

Merci beaucoup! Benjamin

+0

'J'ai une voiture. Roues carrées mais ça a l'air correct pour moi. Un seul problème: je veux faire un raid. Des suggestions? 'N'importe quelle raison raisonnable d'éviter la seule bonne solution? –

Répondre

0

Je crois qu'il y a une raison impérieuse de simplement convertir plutôt que d'introduire quelque chose qui va résoudre temporairement votre problème jusqu'à ce que vous ayez besoin de convertir dans le futur. Je voudrais vous épargner la douleur future en convertissant juste maintenant.