新手问题 求助 Rails app controller 中 respond 的 csv 格式文件在 win 系统中打开中文为乱码的解决办法

n00b1 · 2013年12月23日 · 最后由 small_fish__ 回复于 2013年12月25日 · 3874 次阅读

搜索了下这是 windows 下面 excel 的问题,纯文本打开就没有问题,针对这种情况请问我能在 controller respond 的时候做点什么解决吗?譬如加个 utf-8 编码啥的?

用 open office 吧,可以选择编码

#1 楼 @tumayun excel 算是公司标配...没有办法因为这个说服他们换的...

在 rails 这边就没有什么能做了的吗

windows 中文的话也许需要 gbk 了吧。。。

转换成 gbk 的

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

我用这货来处理 windows 的编码问题,不过 ICU 有时候会将 gb18030 识别成 韩文,暂时无解。charlock_holmes

#6 楼 @reyesyang 非常感谢这位大哥的代码,用了,还是不行...我干脆将那一列都从生成的报告中剔除了...

#9 楼 @luikore 佩服得五体投地

#9 楼 @luikore 果断去看看原理,(BOM => Bype Order Mark)

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