Iv récemment écrit du code qui m'aidera à exporter une base de données SQL en CSV en utilisant FasterCSV avec rails. Cependant, certaines parties de ma base de données contiennent des caractères chinois traditionnels. Quand je l'exporte, je deviens ?????? comme la sortie dans le fichier CSV. Iv a déjà essayé de changer $ KCODE = 'u' pour que FasterCSV utilise UTF-8 pour encoder le fichier CSV, mais pas de chance. Iconv pour convertir l'encodage me donne aussi des résultats étranges. Voici le code source:FasterCSV et caractères non latins
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)
fin
Merci,
Merci! Ça a marché. Cependant, quand je l'ouvre dans MS Excel, je suis encore en train de faire ???? en tant que sorties. Je devine qu'il a quelque chose à voir avec Excel plutôt que mon option d'exportation dans les rails. Et merci pour l'indice, j'ai changé cette section en portées nommées. – TheRealVayne
Excel s'attend à ce que l'encodage soit ANSI. Au cas où, essayez de mettre ': encoding' sur 'e' ou 's', et voyez si Excel est capable de les ouvrir. Sinon, vous pouvez essayer de convertir l'UTF8 en ANSI manuellement - voir http://stackoverflow.com/questions/263271/converting-utf8-to-ansi-with-ruby – kikito