For Ruby to handle MS Excel issue with UTF encoding for German characters I used this approach:
UTF8_BOM = "\uFEFF".freeze def to_csv CSV.generate(headers: true) do |csv| csv << csv_headers csv << csv_data end.prepend(UTF8_BOM) end