【发布时间】:2011-10-28 01:59:35
【问题描述】:
我想知道在导入和解析 CSV 文件时如何更改它的编码。我有这个代码:
csv = CSV.parse(output, :headers => true, :col_sep => ";")
csv.each do |row|
row = row.to_hash.with_indifferent_access
insert_data_method(row)
end
当我阅读我的文件时,我收到了这个错误:
Encoding::CompatibilityError in FileImportingController#load_file
incompatible character encodings: ASCII-8BIT and UTF-8
我读到了row.force_encoding('utf-8'),但它不起作用:
NoMethodError in FileImportingController#load_file
undefined method `force_encoding' for #<ActiveSupport::HashWithIndifferentAccess:0x2905ad0>
谢谢。
【问题讨论】:
-
是否可以添加一个间接步骤并输出单独的文件,而不是将其转换为不同的编码?例如,文本文件在某些部分编码为 UTF-8,但在其他部分编码为 UTF-16LE。只要标题相同,就将一个文件输出到 filename_utf8.txt,将另一个文件输出到 filename_utf16le.txt。这种方式可能使不强制编码成为可能。
标签: ruby-on-rails ruby parsing encoding csv