Rails 3.1,Ruby 1.9.2-p180和UTF-8问题

时间:2011-07-21 09:37:04

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

我在使用UTF-8字符时遇到了一些麻烦。这是db / seeds.rb

User.create(username: 'eml', first_name: '****', last_name: '****äck', 
            email: 'somemail@example.com', password: 'asdasd')

我的终端(OSX 10.5.8)设置为使用UTF-8,Rails(根据application.rb)设置为使用utf-8。这是错误:

$ rake db:seed
rake aborted!
/Projects/***/db/seeds.rb:8: invalid multibyte char (US-ASCII)
/Projects/***/db/seeds.rb:8: invalid multibyte char (US-ASCII)
/Projects/***/db/seeds.rb:8: syntax error, unexpected $end, expecting ')'
...ame: '****', last_name: '****äck', 
...                               ^

Tasks: TOP => db:seed
(See full trace by running task with --trace)

1 个答案:

答案 0 :(得分:5)

# encoding: utf-8文件的顶部添加此行seeds.rb,任何ruby文件都使用spécialschars

我建议您将Encoding.default_external = "UTF-8"添加到config.ru文件,然后添加config/environment.rb以进行编码模板

最后,您可以将"".force_encoding('UTF-8)添加到造成问题的字符串中。

更新:

在config.ru上添加完整行:

# Not override -E option or LANG and apply only for ruby > 1.9
if Object.const_defined?(:Encoding) && !ENV['LANG'] && !ENV['RUBYOPT'].include?('-E')
Encoding.default_internal = 'utf-8'
Encoding.default_external = 'utf-8'
end

Source