我有一個模塊在生成模型時生成csv文件。設置生成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
,我包括我想要生成CSV文件
# app/models/product.rb
class Reason < ActiveRecord::Base
include CsvExportable
.
.
end
在我的控制器中我做
respond_to do |format|
format.html
format.csv { send_data @products.to_csv, filename: 'products.csv' }
end
在模型中的模塊我想設置生成的字符編碼csv文件改爲Shift_JIS而不是默認的utf-8。做這個的最好方式是什麼 ?謝謝
編輯:
我試圖
format.csv { send_data (@products.to_csv).encode("SHIFT-JIS"), filename: 'products.csv' }
現在我得到一個錯誤Encoding::ConverterNotFoundError code converter not found (UTF-8 to SHIFT-JIS)
**這樣就能夠解決您的問題** [當Excel打開CSV文件,它只是假設的 「ISO-8859-1」 字符編碼。我猜它甚至不知道你在HTTP回覆中發送的編碼信息。這就是爲什麼設置爲UTF-8不起作用。](http://stackoverflow.com/a/11451089/4209704) –