2011-07-21 10 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

任意のルビーファイルの使用をseeds.rbファイルの先頭に次の行# encoding: utf-8を追加して、スペシャルの文字

私はテンプレート

を符号化するため Encoding.default_external = "UTF-8" config.ruにファイルを追加することにし、 config/environment.rbであなたを推薦します

最後に、問題の原因となる文字列に"".force_encoding('UTF-8)を追加することができます。

更新:トリックをしたこと、

# 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

ニース:

がconfig.ruのフルラインを追加します。うまくいけば、AJAXのものも正しく動作しますが、文字を正しく表示するのに苦労しています。ありがとう! –

+0

私は困っているわけではないようです。突然の私の見解は、私にエラー以外何も与えていません。 > _ < –

+0

データベースアダプタの 'encoding:utf8'もdatabase.ymlに追加するのを忘れないでください。 –