Iv最近编写的代码将帮助我使用FasterCSV和rails将SQL数据库导出到CSV中。然而,我的数据库中有些部分包含繁体中文字符。当我输出它的时候,我得到了?作为CSV文件中的输出。Iv已经尝试更改$KCODE = 'u‘,以便FasterCSV使用UTF-8对CSV文件进行编码,但没有成功。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)结束
谢谢,
发布于 2010-11-10 00:32:44
我不习惯使用中文字符,但您可以尝试在generate调用中将:encoding选项添加到'u‘(UTF-8):
...
csv_string = FasterCSV.generate(:encoding => 'u') do |csv|
...顺便说一句,我建议使用named_scopes,而不是这样写:
Project.find(:all, :order=> (params[:sort] + ' ' + params[:direction]), :conditions => ["name LIKE ?", "%#{params[:selection]}%"])祝好运!
https://stackoverflow.com/questions/4135815
复制相似问题