搜索了下这是 windows 下面 excel 的问题,纯文本打开就没有问题,针对这种情况请问我能在 controller respond 的时候做点什么解决吗?譬如加个 utf-8 编码啥的?
Windows 默认使用的 GBK 编码。可以判断 UA,如果是 window 用户,导出时使用 iconv 转成 GBK 编码
def conv2gbk_if_win(str)
if request.headers["HTTP_USER_AGENT"] =~ /Windows/
require 'iconv'
Iconv.new("GBK", "UTF-8").iconv(str)
else
str
end
end
@reyesyang 不用这么麻烦,完全无需转码,给 csv 文件加个 BOM 就可以了
csv_data = "\xEF\xBB\xBF#{csv_data}"