2010-03-03 4 views
0

Quelque part le long de la ligne de la base de données à l'application, celle-ci:ne peut savoir où mon encodage de chaîne Ruby 1.9 est obtenir foiré

sauté 

est de se transformer en ceci:

sauté 

J'utilise Ramaze + Rack + MySQL. J'ai un plugin force_encoding mis en place, donc l'encodage sur la chaîne est UTF-8. Si je vois l'enregistrement dans le shell de la base de données, ça semble bien. Le jeu de caractères par défaut sur la table est utf8, et le champ lui-même est "texte". L'encodage sur ma connexion de base de données est utf8. De plus, sur mon Macbook, tout fonctionne très bien. C'est sur mon serveur Ubuntu que ça se casse. J'espère que quelqu'un pourrait le reconnaître et me dire que c'est unicode de se tourner vers l'ASCII, puis de retour, ou quelque chose comme ça.

+0

Où voyez-vous des caractères foirés? Si vous les voyez dans le code HTML résultant, vérifiez d'abord l'encodage HTML. –

Répondre

0

Vos paramètres régionaux sont probablement différents. Exécutez la commande locale sur les deux et voyez quelle est la différence. Je suppose que vous voyez un problème lorsque vous obtenez des résultats de MySQL, ce qui est un problème commun avec 1.9 selon les résultats de google: http://www.google.com/search?q=mysql+ruby+1.9+encoding.

+0

Les deux sections locales sont toutes "en_US.UTF-8". Ouais, je le vois aussi depuis la console, juste en train de saisir l'objet et de l'inspecter. Alors, voici quelque chose d'intéressant. J'ai mis Encoding.default_internal à 'UTF-8', ce qui a fait exploser la journalisation avec "'\ xC3' de ASCII-8BIT à UTF-8", mais cela a également fait ressortir les nouvelles données entrant dans la base de données. Donc, ça doit être un problème d'entrer dans la DB, de ne pas sortir comme je le pensais. Quoi qu'il en soit, je suis sur le point de désactiver la journalisation SQL en production et d'appeler cela une victoire. Ruby 1.9 strings me tue vraiment. –

Questions connexes