rails - кодировка символов UTF-8 не работает в CSV-файлах на Excel - PullRequest
0 голосов
/ 23 ноября 2018

RUBY_VERSION = ruby-1.8.7-p358 RAILS_VERSION = rails (2.3.2)

фрагмент кода

```
def export_to_excel
    csv_text = get_csv_string
    headers['Content-Type'] = "application/vnd.ms-excel"
    headers['Cache-Control'] = ''
    send_data csv_text, :type => 'text/csv; charset=utf-8; header=present', :disposition => "attachment;filename = "new_report.csv"
end
```

Проблема : при загрузке файлаи открыть его в офисе Excel или Libre, он показывает ненужные символы.Я должен вручную пойти и установить кодировку UTF-8 для символов в файле, которые будут распознаны.

То, что я опробовал

  1. Проблема кодировки символов при экспорте данных рельсов в CSV
  2. при изменении строки csv с помощью Iconv на WINDOWS-1252 с помощью Iconv.iconv ('UTF-8 // IGNORE', 'WINDOWS-1252', final_csv_str)
  3. Я использую FasterCSV.generate для создания строки csv.Я пытался использовать FasterCSV.generate (: encoding => "u").Это также не сработало, поскольку само по умолчанию - utf-8.
  4. Когда я открыл файл в LibreOffice, по умолчанию он выбирал кодировку как ISO-8859-14.Я также пытался конвертировать UTF-8 в этот формат.Это не сработало.

Я предполагаю, что есть какой-то заголовок, который я должен добавить к самому файлу, чтобы файл распознавался как кодировка UTF-8, так как установка charset= utf-8 будет уведомлять только браузер.

Кто-нибудь может предложить какие-нибудь идеи?

ОБНОВЛЕНИЕ:

Мое фактическое требование было сделать файлыработать, не требуя от пользователя каких-либо дополнительных шагов.Для этого требования работает следующее решение

  1. Конвертировать CSV в UTF-16
  2. Вставить спецификацию в начало файла
  3. Использовать вкладку в качестве разделителя полей

Кто-то пошел и перепробовал все комбинации трех вышеперечисленных и выяснил это. Ссылка: https://wiki.scn.sap.com/wiki/display/ABAP/CSV+tests+of+encoding+and+column+separator?original_fqdn=wiki.sdn.sap.com

Источник, который привел к вышеуказанной ссылке, взят из этого поста:

Microsoft Excel искажает диакритические знаки в файлах .csv?

Для нашего случая использования просто добавление последовательности символов спецификации ("\ xEF \ xBB \ xBF") к началу строки csv работает.

Ссылка:

Какзаписать маркер спецификации в файл в Ruby

Другие полезные вопросы

  1. Можно ли принудительно заставить Excel автоматически распознавать файлы UTF-8 CSV?
  2. https://softwareengineering.stackexchange.com/questions/372692/should-utf-8-csv-files-contain-a-bom-byte-order-mark
  3. Чем отличается UTF-8 от UTF-8 без спецификации?
  4. Как записать маркер спецификации вфайл в Ruby
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...