From:
http://blog.poyi.tw/blog/2014/05/06/ruby-csv-file/
export_to_csv_string 匯出csv的string格式再利用send_data下載
head = ‘EF BB BF’.split(‘ ‘).map{|a|a.hex.chr}.join() # 加入BOM,解決excel中文亂碼
csv_string = CSV.generate(csv = head) do |csv|
csv << header
csv << body
end
# > csv_string.encoding 執行這句會發現預設編碼為ACSII
csv_string.force_encoding(‘big5’)
# BOM也可以這樣加 csv_string = “\xEF\xBB\xBF#{csv_string}”
# 若不需要調整格式就直接下載
send_data csv_string
convert_to_wide_word 大小寫英文數字轉全形字元
def self.convert_to_wide_word(text)
text.gsub(/[a-v]/){|a|(a.ord + 41608).chr(‘big5’).encode(‘utf-8’)}
.gsub(/[w-z]/){|a|(a.ord + 41673).chr(‘big5’).encode(‘utf-8’)}
.gsub(/[A-Z]/){|a|(a.ord + 41614).chr(‘big5’).encode(‘utf-8’)}
.gsub(/[0-9]/){|a|(a.ord + 41599).chr(‘big5’).encode(‘utf-8’)}
end
convert_to_wide_word(“0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”)
=> “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL
MNOPQRSTUVWXYZ”