J'utilise Ruby 1.9.1 avec Rails 2.3.4 Mon application est de gérer la saisie de texte
Si j'essaye quelque chose comme (les guillemets intérieurs sont différents)
text = "”“"
J'obtiens l'erreur suivante:
#<SyntaxError: /Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: syntax error, unexpected $end, expecting keyword_end
Je dois utiliser ces guillemets car les utilisateurs peuvent les saisir et je dois en tenir compte?
Des idées?
Réponses:
Avez-vous essayé d'ajouter un commentaire magique dans le script où vous utilisez des caractères non ASCII? Il devrait aller au-dessus du script.
Cela a fonctionné pour moi comme un charme.
la source
#!/bin/env ruby
n'est pas nécessaire sauf si vous exécutez le script à partir de la ligne de commande en tant qu'exécutable. La# encoding
ligne fonctionne d'elle-même.# encoding: utf-8
. C'est fin 2013 et nous devons encore jouer à ce jeu. Attendez, le téléphone sonne ... C'était en 2033, ils ont appelé pour dire qu'ils jouaient toujours. Eh bien, merci de me le rappeler, Jarek Zmudzinski de 2010.Si vous souhaitez ajouter facilement des commentaires magiques sur tous les fichiers source d'un projet, vous pouvez utiliser la
magic_encoding
gemmepuis appelez simplement
magic_encoding
le terminal depuis la racine de votre application.la source
magic_encoding
est juste un outil en ligne de commande, pas une dépendance de projet.Je veux juste ajouter ma solution:
j'utilise des trémas allemands comme ö, ü, ä et j'ai la même erreur.
@Jarek Zmudzinski vient de vous expliquer comment cela fonctionne, mais voici le mien:
Ajoutez ce code en haut de votre Controller:
# encoding: UTF-8
(par exemple pour utiliser un message flash avec des trémas)
exemple de mon contrôleur:
Vous pouvez maintenant utiliser ö, ä, ü, ß, "", etc.
la source
Ces guillemets doubles inclinés ne sont pas des caractères ASCII. Le message d'erreur est trompeur sur le fait qu'ils sont «multi-octets».
la source
Juste une note qu'à partir de Ruby 2.0, il n'est pas nécessaire d'ajouter
# encoding: utf-8
. UTF-8 est automatiquement détecté.la source
Cela a fonctionné pour moi:
la source