ActionView :: Template :: Error (encodages de caractères incompatibles: UTF-8 et ASCII-8BIT)
Je suis à l'aide de Ruby 1.9.2, Rails 3.0.4/3.0.5 et Phusion Passenger 3.0.3/3.0.4. Mes modèles sont écrits en HAML et je suis en utilisant le MySQL2 gem. J'ai un contrôleur de l'action que lorsqu'il est passé d'un paramètre qui a un caractère spécial, comme un tréma, me donne l'erreur suivante:
ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)
L'erreur de points à la première ligne de mon HAML modèle, qui a le code suivant:
<!DOCTYPE html>
Ma compréhension est que cela est dû au fait que j'ai une chaîne UTF-8 qui est concaténé avec un code ASCII 8 BITS de la chaîne, mais je ne peux pas pour la vie de me comprendre ce que l'ASCII 8 BITS chaîne. J'ai vérifié que les paramètres de l'action sont encodés en UTF-8 et j'ai ajouté un encodage: UTF-8 de la déclaration du sommet de la HAML modèle et le ruby et j'obtiens toujours cette erreur. Ma demande.rb fichier a un config.encoding = "UTF-8"
déclaration bien et les suivants tous les résultats en UTF-8:
ENV['LANG']
__ENCODING__
Encoding.default_internal
Encoding.default_external
Voici le kicker: je ne peux pas reproduire ce résultat en local sur mon Mac-OSX utilisation autonome des passagers ou des bâtards en soit de développement ou de production. Je ne peux que reproduire sur un serveur de production, l'exécution de nginx+passager sur linux. J'ai vérifié dans la production de la console du serveur que ceux-ci ont mentionné les commandes de tous les résultats en UTF-8.
Avez-vous rencontré ce même message d'erreur et comment les avez-vous le résoudre?
source d'informationauteur Pan Thomakos
Vous devez vous connecter pour publier un commentaire.
Après avoir fait un peu de débogage, j'ai trouvé le problème se produit lors de l'utilisation de la ActionDispatch::objet de Requête qui arrive à avoir les chaînes qui sont tous codés en ASCII 8 BITS, indépendamment de savoir si mon application est codée en UTF-8 ou pas. Je ne sais pas pourquoi cela se produit uniquement lors de l'utilisation d'un serveur de production sur Linux, mais je vais supposer que c'est un caprice en Ruby ou Rails depuis que j'ai été incapable de reproduire cette erreur localement. L'erreur s'est produite, notamment, d'une ligne comme ceci:
Lorsque cette variable d'instance a été imprimé dans le HAML modèle, il a provoqué une erreur, car la chaîne a été codée en ASCII 8 BITS au lieu de UTF-8. Pour résoudre ce que je n'ai suivantes:
Qui a forcé
@current_path
d'utiliser un double chaîne qui a été forcé dans le bon encodage UTF-8. Cette erreur peut également se produire avec d'autres de demande de données connexes commerequest.headers
.Mysql pourrait être la source de gênant ascii. Essayer de mettre la suite dans l'initialiseur d'au moins éliminer cette possibilité:
modifier
Cela peut ne pas être applicable à mysql2 gem. Fonctionne pour mysql.