Когда Excel открывает файл CSV, он принимает только кодировку iso-8859-1. Я предполагаю, что он даже не знает о кодирующей информации, которую вы отправляете в своем HTTP-ответе. Вот почему установка этого значения в UTF-8 не работает.
Итак, чтобы экспортировать файл CSV для Excel в Rails, вы можете сделать это:
send_data Iconv.conv('iso-8859-1//IGNORE', 'utf-8', csv_data),
:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment; filename=#{filename}.csv"
Это перекодирует вашу строку данных UTF-8 (это по умолчанию Rails) в ISO-8859 и отправляет ее. Далее идет информация о том, что этот ответ на самом деле зашифрован по ISO-8859-1 (что не имеет значения для Excel, но технически правильно, если вы откроете его в браузере и т.