Comment changer l'encodage lors de CSV analyse dans les Rails

Je voudrais savoir comment puis-je changer l'encodage de mon fichier CSV lors de l'importation et de l'analyser. J'ai ce code:

csv = CSV.parse(output, :headers => true, :col_sep => ";")
csv.each do |row|
  row = row.to_hash.with_indifferent_access
  insert_data_method(row)
end

Quand je lis mon fichier, j'obtiens cette erreur:

Encoding::CompatibilityError in FileImportingController#load_file
incompatible character encodings: ASCII-8BIT and UTF-8

J'ai lu sur row.force_encoding('utf-8') mais il ne fonctionne pas:

NoMethodError in FileImportingController#load_file
undefined method `force_encoding' for #<ActiveSupport::HashWithIndifferentAccess:0x2905ad0>

Grâce.

Au lieu de le convertir en un autre encodage, serait-il possible d'ajouter une étape d'indirection et de sortie des fichiers séparés? Par exemple, un fichier texte est encodé en UTF-8 dans certaines parties, mais UTF-16LE dans d'autres. Aussi longtemps que les en-têtes sont identiques, la sortie d'un fichier pour filename_utf8.txt et un autre pour filename_utf16le.txt. De cette façon pourrait rendre possible pour ne pas forcer l'encodage.

OriginalL'auteur TW147 | 2011-08-16