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

我使用Ruby 1.9.1和Rails 2.3.4我的应用程序是处理文本输入

如果我尝试(里面的引号看起来不一样)

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

我需要使用这些引号,因为用户可能会输入它们,我必须为那?

什么好主意吗?

105009 次浏览

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

您尝试过在使用非ascii字符的脚本中添加神奇的注释吗?它应该在脚本之上。

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

这对我来说就像魔法一样有效。

如果你想轻松地在一个项目的所有源文件上添加神奇的注释,你可以使用magic_encoding gem

sudo gem install magic_encoding

然后在终端中从你的应用程序的根调用magic_encoding

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

这对我很管用:

$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8
我只是想添加我的解决方案:

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

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

我的控制器的例子:

# encoding: UTF-8
class UserController < ApplicationController

现在你可以使用ö, ä,ü, ß, ""等等。