我使用 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
,HerokuUTF-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。会是这样吗?
有什么想法我可以尝试更多吗?
编辑
我发现您可以通过添加ruby "1.9.3"
gemfile 来明确选择 heroku 上的 ruby 版本。似乎解决了我的问题。