J'utilise des rails 2.3.3 et Ruby 1.9.1.
J'essaie de rendre une vue qui inclut une partielle. Dans le partiel, je produisez un champ d'un modèle codé dans UTF8.
Cela échoue avec p> d'autre part, je peux émettre le champ avec le contenu UTF8 tout simplement bien si j'utilise directement ce champ dans une vue (quand il n'est pas dans une partie ). P> Comment puis-je résoudre ce problème?
J'ai déjà essayé de définir le codage par défaut mais qui ne semblait pas fonctionner. P> p>
3 Réponses :
Il semble y avoir un problème avec le codage d'ERB dans Ruby 1.9. Plus de détails sont dans Ce billet de phare . Un patch avec une solution de contournement a été inclus a>, peut-être cela fonctionne pour vous? P>
Le problème est le code ERB dans Ruby 1.9 Distribution. Lorsqu'il compose le code de modèle, il force un codage "ASCII-8BIT", le problème est que le code de modèle contient des caractères multibyte, le code de modèle est renvoyé dans une chaîne "ASCII-8BIT" et lorsque cette chaîne est concessive avec un "UTF8" Chaîne avec caractère multibyte L'exception est soulevée car les chaînes entre ces codages ne sont compatibles que lorsque les deux n'ont que sept caractères. P>
blockQuote>
Il s'agit du mysql-gem était le coupable. Il a renvoyé toutes les cordes comme ASCII-8BIT, même si elles sont UTF8 dans la DB. Utilisation de Github.com/Hectorgm/mysql-Ruby/tree/master
Désolé Molf, j'ai bownvoted cette cause après avoir expérimenté cette question, c'est la faute des gemmes MySQL, je pense que le bug est dans un peu de limbe que personne ne soit vraiment sûr de sa question.
Je viens d'avoir aussi cela aussi, alors je pense que sa peine d'avoir la bonne réponse. p>
Le joyau 2.8.1 MySQL N'EST PAS UTF-8 convivial, il sera donc parfois de retourner des cordes UTF et de mentir des rails, en lui disant qu'ils sont ASCII lorsqu'ils sont en fait ils sont UTF-8. Cela fait exploser les choses. p>
Donc: vous pouvez être un patch de singe ou obtenir un gemme MySQL compatible. Voir:
0 commentaires
Il semble y avoir une incompatibilité entre Ruby 1.9x et le gemme MySQL en ce qui concerne la façon dont les chaînes sont transmises d'avant en arrière (spécifiquement le codage des chaînes).
Pour réparer, exécuter P>
gem install mysql2
Comment avez-vous essayé de définir le codage par défaut? Pouvez-vous nous donner un exemple?