Rails utf-8问题

san*_*ius 11 character-encoding ruby-on-rails-3

我在那里,我是ruby(和rails)的新手,在字符串中使用瑞典字母时遇到了问题.在我的动作中创建一个像这样的实例变量:

@title = "Välkommen"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

invalid multibyte char (US-ASCII)
syntax error, unexpected $end, expecting keyword_end
@title = "Välkommen"
             ^
Run Code Online (Sandbox Code Playgroud)

发生了什么?

编辑:如果我添加:

# coding: utf-8
Run Code Online (Sandbox Code Playgroud)

在我的控制器顶部它的工作原理.为什么这样,我怎么能解决这个"问题"?

Fla*_*ame 11

请参阅Joel spolsky的文章" 绝对最低限度,每个软件开发人员绝对必须知道Unicode和字符集(没有借口!) ".

引用简洁地回答这个问题的部分

关于编码的最重要事实

如果你完全忘记我刚才解释的一切,请记住一个非常重要的事实.在不知道它使用什么编码的情况下拥有字符串是没有意义的.你不能再把头埋在沙子里,假装"普通"文字是ASCII.

这就是为什么你必须告诉ruby你的文件中使用了什么编码.由于编码没有标记在与您的文件关联的某种元数据中,因此某些软件会假定ASCII直到它知道更好.Ruby 1.9可能会这样做直到你的注释停止,并重新开始读取文件,现在将其解码为utf-8.

显然,如果您对ruby文件使用了一些其他Unicode编码或更多本地编码,则需要更改注释以指示正确的编码.