197 votes

séquence char (US-ASCII) avec Rails et Ruby 1.9

Je suis l'aide de Ruby 1.9.1 avec des Rails 2.3.4 Mon application est de gérer la saisie de texte

Si je tente quelque chose comme (l'intérieur des guillemets look différent)

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

J'ai besoin de l'utilisateur, ces guillemets que les utilisateurs peuvent entrer et je compte pour cela?

Des idées?

690voto

Jarek Zmudzinski Points 6431

Avez-vous essayé d'ajouter de la magie commentaire dans le script où vous utilisez des caractères non ASCII caractères? Il faut aller sur le haut du script.

#!/bin/env ruby
# encoding: utf-8

Il a travaillé pour moi comme un charme.

43voto

Shamu Points 445

Si vous voulez ajouter de la magie des commentaires sur tous les fichiers source d'un projet facilement, vous pouvez utiliser l' magic_encoding gem

sudo gem install magic_encoding

puis il suffit d'appeler magic_encoding dans le terminal à partir de la racine de votre application.

17voto

Ismoh Points 146

Je veux juste ajouter ma solution:

J'utilise accents comme ö, ü, ä et obtenu la même erreur.
@Jarek Zmudzinski viens de vous dire comment cela fonctionne, mais voici la mienne:


Ajouter ce code en haut de votre Contrôleur: # encoding: UTF-8
(par exemple l'utilisation de message flash avec des trémas)

exemple de mon Contrôleur:

# encoding: UTF-8
class UserController < ApplicationController

Maintenant, vous pouvez utiliser ö, ä ,ü, ß, "", etc.

8voto

Nowaker Points 2449

Juste une remarque comme de Ruby 2.0 il n'y a pas besoin d'ajouter d' # encoding: utf-8. UTF-8 est automatiquement détecté.

7voto

Novelocrat Points 12126

Ces obliques, les guillemets ne sont pas des caractères ASCII. Le message d'erreur est trompeur à leur sujet "multi-byte'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X