1

最近、レールで FasterCSV を使用して SQL データベースを CSV にエクスポートするのに役立つコードを作成しました。ただし、データベースの一部に繁体字が含まれています。エクスポートすると、?????? が表示されます CSV ファイルの出力として。FasterCSV が UTF-8 を使用して CSV ファイルをエンコードするように $KCODE = 'u' を変更しようとしましたが、うまくいきませんでした。エンコーディングを変換するIconvも奇妙な結果をもたらしています。ソースコードは次のとおりです。

def csv
@lists = Project.find(:all, :order=> (params[:sort] + ' ' + params[:direction]), :conditions =>  ["name LIKE ?", "%#{params[:selection]}%"])

csv_string = FasterCSV.generate do |csv|
  csv << [<bold> "Status","Name","Summary","Description","Creator","Comment","Contact Information","Created Date","Updated Date"]

  @lists.each do |project|
    csv << [project.status, project.name, project.summary, project.description, project.creator, project.statusreason, project.contactinfo, project.created_at, project.updated_at]
  end
end

filename = Time.now.strftime("%Y%m%d") + ".csv"
send_data(csv_string,
  :type => 'text/csv; charset=utf-8; header=present',
  :filename => filename)

終わり

ありがとう、

4

1 に答える 1

2

私は漢字の扱いに慣れていませんが、呼び出し時:encodingに 'u' (UTF-8) にオプションを追加してみてください:generate

...
csv_string = FasterCSV.generate(:encoding => 'u') do |csv|
...

補足として、これを書く代わりに、named_scopesを使用することをお勧めします。

Project.find(:all, :order=> (params[:sort] + ' ' + params[:direction]), :conditions =>  ["name LIKE ?", "%#{params[:selection]}%"])

幸運を!

于 2010-11-09T16:32:43.973 に答える