Ruby on rails FasterCSV和非拉丁字符

Ruby on rails FasterCSV和非拉丁字符,ruby-on-rails,fastercsv,Ruby On Rails,Fastercsv,Iv最近编写的代码将帮助我使用FasterCSV和rails将SQL数据库导出到CSV。然而,我的数据库的某些部分包含繁体中文字符。当我导出它时,我得到了??????作为CSV文件中的输出。Iv已经尝试更改$KCODE='u',以便FasterCSV使用UTF-8对CSV文件进行编码,但没有成功。Iconv转换编码也给了我奇怪的结果。以下是源代码: def csv @lists = Project.find(:all, :order=> (params[:sort] + ' ' + par

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)
def csv
@lists=Project.find(:all,:order=>(params[:sort]+“”+params[:direction]),:conditions=>[“类似名称?”,“%#{params[:selection]}%”)
csv|U string=FasterCSV.generate do|csv|
csv文件名)
结束


谢谢,

我不习惯使用汉字,但您可以尝试将
:encoding
选项添加到
生成
调用中的'u'(UTF-8):

...
csv_string = FasterCSV.generate(:encoding => 'u') do |csv|
...
作为补充说明,我建议使用以下内容,而不是编写以下内容:

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

祝你好运

谢谢!成功了。然而,当我在MS excel中打开它时,我仍然得到????作为输出。我猜这与excel有关,而不是我在rails中的导出选项。感谢您的提示,我已经将该部分更改为命名范围。Excel希望编码为ANSI。以防万一,请尝试将
:encoding
设置为“e”或“s”,然后查看excel是否能够打开它们。如果没有,您可以尝试手动将UTF8转换为ANSI-请参阅