diff --git a/lib/redmine/export/csv.rb b/lib/redmine/export/csv.rb index dfbe36f4f..3b59ae30f 100644 --- a/lib/redmine/export/csv.rb +++ b/lib/redmine/export/csv.rb @@ -29,19 +29,18 @@ module Redmine class Base < ::CSV include Redmine::I18n + BOM = "\xEF\xBB\xBF".force_encoding('UTF-8') class << self def generate(&block) col_sep = l(:general_csv_separator) encoding = l(:general_csv_encoding) - str = ''.force_encoding(encoding) - if encoding == 'UTF-8' - # BOM - str = "\xEF\xBB\xBF".force_encoding(encoding) + res = super(:col_sep => col_sep, :encoding => encoding, &block) + if encoding == 'UTF-8' && !res.starts_with?(BOM) + res = BOM + res end - - super(str, :col_sep => col_sep, :encoding => encoding, &block) + return res end end