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

时间:2009-11-16 03:00:36

标签: ruby-on-rails ruby-1.9

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

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

有什么想法吗?

6 个答案:

答案 0 :(得分:690)

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

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

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

答案 1 :(得分:43)

如果您想轻松地在项目的所有源文件上添加魔术评论,可以使用magic_encoding gem

sudo gem install magic_encoding

然后只需从您应用的根目录中调用终端中的magic_encoding

答案 2 :(得分:16)

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

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

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

我的控制器示例:

# encoding: UTF-8
class UserController < ApplicationController

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

答案 3 :(得分:8)

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

答案 4 :(得分:7)

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

答案 5 :(得分:4)

这对我有用:

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