2012-07-07 60 views
1

我使用Rails 3.2和CSV库导入CSV文件。 我用这样的:导入CSV和编码

CSV.foreach(open(csv_url), :headers => true) do |p| 

当我能正常工作我的本地计算机上运行,​​但由于某种原因失败了在Heroku上的一些记录与错误:

incompatible character encodings: ASCII-8BIT and UTF-8 

它失败在我已经定义的方法中,简单地附加两个字符串:

def name_and_brand 
    "#{name} #{brand.name}" 
end 

它只在某些记录上失败,但并非全部。

我读过很多关于这方面的信息,但我还没有想出如何解决它。

如果我只是输出文本的编码,我解析它在我的本地计算机上说它是UTF-8,但在Heroku上它说ASCII-8BIT

如果我在控制台中运行"a".encoding它输出UTF-8和Heroku输出UTF-8也。

什么我试过到目前为止

# in application.rb 
config.encoding = "utf-8" 

# in environment.rb 
Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

# in other files 
# encoding: UTF-8 

一个不同之处,我发现的是,Heroku的使用Ruby 1.9.2和我在我的本地机器上使用1.9.3。这可能吗?

任何想法,我可以尝试更多?

编辑

我发现,你可以明确地在Gemfile中添加ruby "1.9.3"选择在Heroku红宝石版本。似乎已经解决了我的问题。

+0

我使用Ruby 1.9.3p194但我仍然有同样的问题将ruby "1.9.3"!有谁知道如何强制上传文件的编码? – Jonatan 2012-10-15 21:11:48

回答

0

我不得不红宝石版本明确更改为1.9.3在我的Gemfile