Problème de Rails utf-8
- Je là, je suis nouveau sur ruby (et rails) et ayant som problèmes lors de l'utilisation suédois lettres en chaînes. Dans mon action de créer une instance de la variable comme ceci:
@title = "Välkommen"
Et j'obtiens l'erreur suivante:
invalid multibyte char (US-ASCII)
syntax error, unexpected $end, expecting keyword_end
@title = "Välkommen"
^
Ce qui se passe?
EDIT: Si j'ajoute:
# coding: utf-8
en haut de mon contrôleur, il fonctionne. Pourquoi et comment puis-je slove ce "problème"?
source d'informationauteur sandelius
Vous devez vous connecter pour publier un commentaire.
Voir Joel spolsky de l'article "Le Minimum Absolu que Tout Développeur Doit Absolument, Positivement Savoir Sur Unicode et les Jeux de Caractères (Pas d'Excuses!)".
De citer la partie qui répond à ces questions de manière concise
C'est pourquoi vous devez dire ruby quel encodage est utilisé dans votre fichier. Étant donné que le codage n'est pas marqué dans une sorte de métadonnées associé à votre fichier, certains logiciels supposé ASCII jusqu'à ce qu'il sait mieux. Ruby 1.9 ne doute donc, jusqu'à ce que votre commentaire quand il va s'arrêter et redémarrer la lecture du fichier maintenant décodage en utf-8.
Évidemment, si vous avez utilisé certains autres de codage Unicode ou certains plus local de l'encodage de votre fichier ruby, vous devrez modifier le commentaire pour indiquer l'encodage correct.
La "magie commentaire" en Ruby 1.9 (sur lequel Rails 3 est basé), dit à l'interprète ce que le codage d'attendre. C'est important parce que dans Ruby 1.9, chaque chaîne a un encodage. Avant 1.9, chaque chaîne était juste une séquence d'octets.
Une très bonne description du problème est dans James Gray série de billets de blog sur Ruby et Unicode. Celui qui est exactement pertinentes à votre question est http://blog.grayproductions.net/articles/ruby_19s_three_default_encodings (mais voir les autres parce qu'ils sont très bons).
La ligne importante de l'article:
Il y a plusieurs endroits qui peuvent causer des problèmes avec l'encodage utf-8.
mais certains trucs sont pour résoudre ce problème:
utilisez rad rails, c'est simple à réaliser: la marque de votre projet,
sélectionnez propriétés, dans le "texte-fichier-encodage", sélectionnez "autre:
utf-8")
Assurez-vous de mettre dans votre étrange "å,ä,ö" les personnages de vos fichiers
ou vous aurez une erreur mysql, car il va changer votre "å,ä,ö" à une
"square" (personnage inconnu)
dans vos bases de données.yml définir pour chaque environnement de serveur (dans ce
exemple de "développement" avec mysql)
définir un avant le filtre dans votre contrôleur d'application
(application.rb):
assurez-vous de définir le codage utf-8 dans votre base de données mysql (je ne l'ai utilisé
mysql.. donc je ne sais pas pour les autres bases de données) pour chaque table. Si vous
utiliser mySQL Administrator, vous pouvez faire comme ceci: modifier le tableau, appuyez sur la
"l'option de la table" de l'onglet, changement de charset "utf-8" et le classement à
"utf8_general_ci"
( Courtsey : kombatsanta )