199

我正在使用 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

我需要使用这些引号,因为用户可能会输入它们并且我必须考虑到这一点?

有任何想法吗?

4

6 回答 6

690

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

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

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

于 2010-01-20T21:41:34.430 回答
42

如果您想轻松地在项目的所有源文件上添加魔术注释,您可以使用magic_encodinggem

sudo gem install magic_encoding

然后只需magic_encoding从应用程序的根目录调用终端即可。

于 2010-08-03T12:38:05.970 回答
17

我只想添加我的解决方案:

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

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

我的控制器示例:

# encoding: UTF-8
class UserController < ApplicationController

现在您可以使用ö、ä、ü、ß、“”等。

于 2014-04-10T13:03:25.960 回答
11

这对我有用:

$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8
于 2014-03-17T13:15:59.943 回答
8

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

于 2009-11-16T03:06:01.407 回答
8

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

于 2014-01-07T15:06:56.390 回答