J'ai un module pour générer le fichier csv du modèle lorsqu'il est inclus.Définir le codage des caractères lors de la génération des fichiers CSV Rails 4.2
# app/models/concerns/csv_exportable.rb
module CsvExportable
extend ActiveSupport::Concern
included do
def self.to_csv(options = {})
CSV.generate(options) do |csv|
csv << column_names
all.each do |thismodel|
csv << thismodel.attributes.values_at(*column_names)
end
end
end
end
end
et j'inclure le module dans les modèles pour lesquels je veux générer un fichier csv
# app/models/product.rb
class Reason < ActiveRecord::Base
include CsvExportable
.
.
end
Dans mon contrôleur je
respond_to do |format|
format.html
format.csv { send_data @products.to_csv, filename: 'products.csv' }
end
Je veux régler le codage de caractères généré fichier csv à Shift_JIS au lieu de par défaut utf-8. Quelle est la meilleure façon de procéder ? Merci
EDIT:
J'ai essayé
format.csv { send_data (@products.to_csv).encode("SHIFT-JIS"), filename: 'products.csv' }
maintenant je reçois une erreur Encoding::ConverterNotFoundError code converter not found (UTF-8 to SHIFT-JIS)
** Cela peut résoudre votre problème ** [Lorsque Excel ouvre le fichier CSV, il prend juste un caractère "iso-8859-1" encoding. Je suppose qu'il ne connaît même pas les informations d'encodage que vous envoyez dans votre réponse HTTP. C'est pourquoi la mise en UTF-8 ne fonctionne pas.] (Http://stackoverflow.com/a/11451089/4209704) –