UTF-8,CSV导入,Rails 4中的字节序列无效

时间:2014-03-25 07:26:46

标签: csv encoding utf-8 ruby-on-rails-4 rake-task

我有一个rake任务,从CSV文件填充我的数据库:

require 'csv'
namespace :import_data_csv do
desc "Import teams from csv file"
task import_data: :environment do

  CSV.foreach(file, :headers => true) do |row|
  #various import tasks

这已经正常工作,但是使用新的CSV文件,我在CSV文件的第6行收到以下错误:

Invalid byte sequence in UTF-8

我查看了这行,似乎找不到任何不规则的字符。

我还尝试了一些在stackoverflow上推荐的其他修补程序: - 将CSV.foreach更改为:

reader = CSV.open(file, "r")
reader.each do |row|

改变:

CSV.foreach(file, headers => true) do |row|

到:

CSV.foreach(file, encoding: "r:ISO-8859-1", :headers => true) do |row|

这些似乎都没有解决问题。

建议?

2 个答案:

答案 0 :(得分:0)

我通过将文件保存为MDOS CSV而不是标准CSV文件或Windows CSV格式来解决此问题。

答案 1 :(得分:0)

我的答案是获取CSV文件并将其保存到文本文件中。然后用逗号替换选项卡。然后将文件保存为UTF-8编码。最后,将.txt更改为.csv并确保它在Excel中工作但不要将其保存在Excel中。当你看到它看起来正确时,请关闭它。然后上传它。

长期的非编程解决方案,但就我的目的而言,这已经足够了。

来源在这里:https://help.salesforce.com/apex/HTViewSolution?id=000003837&language=en_US