【问题标题】:Rails fixtures encoding error "incompatible character encodings: ASCII-8BIT and UTF-8"Rails 固定装置编码错误“不兼容的字符编码:ASCII-8BIT 和 UTF-8”
【发布时间】:2011-04-13 09:10:01
【问题描述】:
使用 ruby 1.9.2 和 Rails 3 我尝试在 seeds.rb 中运行时遇到编码错误:
Fixtures.create_fixtures("#{Rails.root}/db/seed", "countries")
我确信 .csv 文件是用 UTF-8 编码的,并且可以使用 ruby 的 CSV 类进行读取和解析。这是固定装置的 Rails 3 编码问题吗?
【问题讨论】:
标签:
ruby-on-rails
utf-8
character-encoding
【解决方案1】:
我认为问题出在 arel 上。插入带有 UTF-8 字符的字符串时,我得到了同样的结果。
arel (2.0.4) lib/arel/visitors/to_sql.rb:70:in `join'
arel (2.0.4) lib/arel/visitors/to_sql.rb:70:in `visit_Arel_Nodes_Values'
arel (2.0.4) lib/arel/visitors/visitor.rb:15:in `visit'
arel (2.0.4) lib/arel/visitors/to_sql.rb:60:in `visit_Arel_Nodes_InsertStatement'
arel (2.0.4) lib/arel/visitors/visitor.rb:15:in `visit'
arel (2.0.4) lib/arel/visitors/visitor.rb:5:in `accept'
arel (2.0.4) lib/arel/visitors/to_sql.rb:19:in `block in accept'
activerecord (3.0.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:110:in `with_connection'
arel (2.0.4) lib/arel/visitors/to_sql.rb:17:in `accept'
arel (2.0.4) lib/arel/tree_manager.rb:19:in `to_sql'
arel (2.0.4) lib/arel/select_manager.rb:191:in `insert'
就这样解决了:
converter = Iconv.new 'UTF-8//IGNORE', 'UTF-8'
value = converter.iconv(value)
不过,不要认为它对您的夹具问题有多大帮助...