jruby on rails webappからExcelにデータをエクスポートしたいので、csv文字列を作成し、を使用してダウンロードとしてクライアントに送信します。
send_data(text, :filename => "file.csv", :type => "text/csv; charset=CP1252", :encoding => "CP1252")
ファイルはExcelが正しく読み取れないUTF-8にあるようです。私は問題をグーグルで検索し、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]-DebianLenny-Glassfishアプリサーバー-Iceweasel3.0。 6
編集:iconvを使用するためにいくつかの宝石を含める必要がありますか?
解決策:S.Markはこの解決策を指摘しました:Excelに次のように理解させるには、UTF-16LEエンコーディングを使用する必要があります。
text= Iconv.iconv('UTF-16LE', 'UTF-8', text)
その答えをありがとう、S.Mark。