Ruby On Rails和UTF-8

时间:2010-05-04 09:14:23

标签: ruby-on-rails ruby encoding utf-8

我有一个带有SayControllerhello操作和视图模板say/hello.html.erb的Rails应用程序。当我添加一些西里尔字符如“ю”时,我收到一个错误:

SayController中的ArgumentError#hello

invalid byte sequence in UTF-8

标题:

{"Cache-Control"=>"no-cache",
 "X-Runtime"=>"11",
 "Content-Type"=>"text/html; charset=utf-8"}

如果我尝试用嵌入式Ruby写这封信,

<%= "ю" %>

我没有收到任何错误,但它显示的是黑色方块( )中的问号,而不是此字母。

我使用的是Windows 7 x64,Ruby 1.9.1p378,Rails 2.3.5,WEBrick服务器。

2 个答案:

答案 0 :(得分:2)

这个错误的一个可能原因是包含西里尔字母的文件不是用UTF8编码的,而是像KOI8这样的俄语编码。这将导致在UTF8中无法解释字符(这是正确的!)。

请仔细检查您的文件是否以UTF8格式正确编码。

答案 1 :(得分:1)

使用以下内容在your_app / config / initializers下创建初始化文件(例如encoding_fix.rb):

Encoding.default_internal = Encoding::UTF_8 if RUBY_VERSION > "1.9"
Encoding.default_external = Encoding::UTF_8 if RUBY_VERSION > "1.9"

这会将编码设置为utf8。