ruby on rails 导出csv中文乱码——神奇的\xEF\xBB\xBF

最近弄csv导出,碰到了中文乱码问题。折腾了很久,一两天去了。

试过几个库都碰到编码的问题。

也用到了fastercsv(ruby1.9.2已添加到标准库为csv,require 'csv'),导出一样乱码,有高手说

output = NKF.nkf("-wLuxs",output)        #转化编码格式

 

 

用这个来转换,但是我试了,在我的项目中反正是没有效果。(这里是用到nkf库,require 'nkf')

 

后面看到有人说要加个这个:

head = ‘EF BB BF’.split(' ').map{|a|a.hex.chr}.join()

 

看起来好高深- -!这么复杂~。~

不过加进去还真起效果了。但是怎么个加进去。是个问题:

我用fastercsv,把上面这个head加到第一行,乱码问题解决了,但是csv文件多了一空行。这显然不行。然后又是折腾如何把我内容的头部放到第一行。。。倍感这东西太坑了。

 

其实:

 

一切也没多难,就是我们需要给导出的csv开头加个BOM(我这里导出的格式使用utf8),也就是要加个16进制串:“\xEF\xBB\xBF”。上面的head的值其实就是这个串,搞那么复杂,吓倒我了!!

 

到现在应该就明了了,就是在csv文件最开始加上“\xEF\xBB\xBF”,比如我的csv中有个头部,我就加到头部:

header: ["\xEF\xBB\xBF姓名",'手机','']

 

这里要注意的是ruby字符串可以用单引号,和双引号。区别就不多说了,这里引用16进制串的就必须用双引号,其他的没事,你懂的。写好点可以封装一下。

 

至此搞定!其他什么都不要弄,就在开始加个\xEF\xBB\xBF,这个需要放到双引号中.

 

当然,这不是最好的方案。但是~管用~ 不管你有没有用,我反正是有用了^_^ ~。

 

参考:

http://www.zhouwenyi.com/node/10087

 

http://stackoverflow.com/questions/155097/microsoft-excel-mangles-diacritics-in-csv-files

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值