ruby csv excel gibberish

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”