2011-07-21 37 views
2

我在使用UTF-8字符时遇到了一些麻烦。下面是分贝/ seeds.rbRails 3.1,Ruby 1.9.2-p180和UTF-8问题

User.create(username: 'eml', first_name: '****', last_name: '****äck', 
      email: '[email protected]', password: 'asdasd') 

我的终端(OSX 10.5.8)被设置为使用UTF-8,滑轨(根据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) 

回答

5

我推荐你加入这行# encoding: utf-8seeds.rb文件的顶部和任何Ruby文件使用特价字符以增加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

+0

尼斯,该诀窍。希望它也适用于我的AJAX内容,它也有正确显示字符的问题。谢谢! –

+0

是啊,看起来我不是没有麻烦。突然之间,我的意见只给了我一些错误。 > _ < –

+0

不要忘记为你的数据库适配器添加'encoding:utf8',在你的database.yml –