Ruby 1.8.7では、すべてのフィールドをUTF-16にエンコードし、BOMを破棄します(たぶん)。
次のコードは、active_scaffold_exportから抽出されます。
<%
require 'fastercsv'
fcsv_options = {
:row_sep => "\n",
:col_sep => params[:delimiter],
:force_quotes => @export_config.force_quotes,
:headers => @export_columns.collect { |column| format_export_column_header_name(column) }
}
data = FasterCSV.generate(fcsv_options) do |csv|
csv << fcsv_options[:headers] unless params[:skip_header] == 'true'
@records.each do |record|
csv << @export_columns.collect { |column|
# Convert to UTF-16 discarding the BOM, required for Excel (> 2003 ?)
Iconv.conv('UTF-16', 'UTF-8', get_export_column_value(record, column))[2..-1]
}
end
end
-%><%= data -%>
重要な行は次のとおりです。
Iconv.conv('UTF-16', 'UTF-8', get_export_column_value(record, column))[2..-1]