Я хочу экспортировать некоторые данные из моего jruby в rails webapp для превосходства, поэтому я создаю строку csv и отправляю ее для загрузки клиенту, используя
send_data(text, :filename => "file.csv", :type => "text/csv; charset=CP1252", :encoding => "CP1252")
Файл, похоже, в формате UTF-8, который Excel не может правильно прочитать. Я погуглил проблему и обнаружил, что iconv может конвертировать кодировки. Я пытаюсь сделать это с:
ic = Iconv.new('CP1252', 'UTF-8')
text = ic.iconv(text)
но когда я отправляю преобразованный текст, это не имеет никакого значения. Это все еще UTF-8, и Excel не может читать специальные символы. Есть несколько решений, использующих iconv, так что, похоже, это работает для других. Когда я вручную конвертирую файл в оболочке linux с помощью iconv, он работает.
Что я делаю не так? Есть ли лучший способ?
Я использую:
- jruby 1.3.1 (ruby 1.8.6p287) (2009-06-15 2fd6c3d) (Java HotSpot (TM) Client VM 1.6.0_19) [i386-java]
- Debian Lenny
- Сервер приложений Glassfish
- Iceweasel 3.0.6
Edit:
Должен ли я включить немного драгоценного камня, чтобы использовать iconv?
Решение:
С.Марк указал на это решение:
Вы должны использовать кодировку UTF-16LE, чтобы Excel понял это, например:
text= Iconv.iconv('UTF-16LE', 'UTF-8', text)
Спасибо, С.Марк за этот ответ.