【问题标题】:Import CSV and encodings导入 CSV 和编码
【发布时间】:2012-07-08 15:58:29
【问题描述】:

我使用 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​​ 版本。似乎解决了我的问题。

【问题讨论】:

  • 我正在使用 Ruby 1.9.3p194 但我仍然遇到同样的问题!有谁知道如何强制上传文件的编码?

标签: ruby-on-rails ruby


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多