新手问题 Ruby 导出 CSV 文件中文乱码,纠结了好久好久

123asdf · 2015年02月04日 · 最后由 rubyu2 回复于 2015年02月06日 · 7076 次阅读

导出代码如下(变量 text 是 csv 格式的字符串)


send_data text,
          :type => 'text/csv; charset=utf-8; header=present',
          :disposition => "attachment; filename=Members.csv"

你的编码有没有试试 Unicode 呢?

下面的代码怎么才能调好啊。。一直乱码,都几天了还是乱,,,

text="234234,是打发士大夫"
send_data text ,
          :type => 'text/csv ',
          :disposition => " filename=Members.csv"

.rb 的文件全部用 utf-8,第一行增加: # encoding: utf-8

application.rb 里边增加: config.encoding = "utf-8"

然后用下面代码写入文件试试:

require 'csv'
CSV.open('test.csv', 'wb') do |csv|
  csv << ['中文', '测试', '测试']
end

等待大神。。。。

对了,MAC 的 Office 打开 csv,好像就是有乱码问题,可以使用 Numbers,LibreOffice,OpenOffice 试试。

#4 楼 @raofeng 这个是导出个 csv 文件,没有写入和读取 csv 文件的代码。怎么改~~??

#6 楼 @raofeng 我要是这样对测试们说,,,咋开口啊,,,

require 'csv'
class Export
  def self.csv
    CSV.generate do |csv|
      csv << ['中文', '测试']
    end
  end
end

def index
  send_data(Export.csv, filename: 'test.csv')
end

MAC 的 Office 好像就是乱码问题,而且默认好像是分号来分割,所以我们就直接跟他们说了,只能用 Numbers,因为我们开发的是内部系统。

你这是啥软件?加上 BOM 试试,不行就转成带 BOM 的 UTF16 再试试

#9 楼 @raofeng 这个也是乱码,,,╮(╯▽╰)╭

#11 楼 @lululau 我在网上查了,好多也是说 BOM,加几个字符就好了。但他们的都是文件流啊什么的,,我不知道导出字符串怎么加 header。。。

#10 楼 @raofeng 我用 win 平台测试也是乱码的,,不知道咋回事。。。。。

要不然,你生成 xlsx 吧。 推荐使用这个 gem 包:axlsx

试试这个吧,不行的话就是你的数据有问题 def utf8_bom utf8_arr = [0xEF,0xBB,0xBF] bom = utf8_arr.pack("c3") bom end

send_data(utf8_bom << text, :type => 'text/csv', :filename => "Members.csv" )

#16 楼 @Lucifer 这个应该是管用的,我们之前也是这样,要在头里加编码信息。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号