导入CSV和编码

时间:2012-07-07 19:05:37

标签: ruby-on-rails ruby

我使用Rails 3.2和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上显式选择ruby版本。似乎解决了我的问题。

1 个答案:

答案 0 :(得分:0)

我必须通过在我的Gemfile中添加ruby "1.9.3"来明确地将ruby版本更改为1.9.3