无效的多字节字符(US-ASCII)与Rails和Ruby 1.9

我正在使用Ruby 1.9.1和Rails 2.3.4我的应用程序是处理文本input

如果我尝试像(内部引号看起来不同)

text = "”“" 

我得到以下错误:

 #<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 

我需要用户用这些引号作为用户可能input他们,我必须说明这一点?

有任何想法吗?

您是否尝试在使用非ASCII字符的脚本中添加魔术注释? 它应该放在脚本的顶部。

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

它对我来说就像一个魅力。

如果您想轻松地在项目的所有源文件中添加魔法注释,则可以使用magic_encoding gem

 sudo gem install magic_encoding 

然后只需从您的应用程序的根目录中调用magic_encoding

我只想添加我的解决scheme:

我使用德语变音,如ö,ü,ä,并得到同样的错误。
@Jarek Zmudzinski刚刚告诉你它是如何工作的,但这里是我的:

将此代码添加到控制器的顶部: # encoding: UTF-8
(例如,使用带元音变音的flash消息)

我的控制器的例子:

 # encoding: UTF-8 class UserController < ApplicationController 

现在你可以使用ö,ä,ü,ß,“”等

那些倾斜的双引号不是ASCII字符。 错误信息是误导他们是'多字节'。

请注意,从Ruby 2.0开始,不需要添加# encoding: utf-8 。 UTF-8会自动检测到。

这对我有用:

 $ export LC_ALL=en_US.UTF-8 $ export LANG=en_US.UTF-8