Rails row ["name"] 为什么没有值?这是什么原因?

dothide · 2013年12月25日 · 最后由 sevk 回复于 2013年12月26日 · 3079 次阅读

我猜 row["sex"] 也没有吧。。

保持关注

看看 row.keys

那么 row[row.keys[0]] ?

能贴出来完整的代码吗?

那么显然 row.keys[0] 不是 "name" ……

#9 楼 @Kabie 可他偏偏就是 name

#11 楼 @dothide 那只是显示的是 name 吧……不信你 === 看看……

有趣,关注

大概是带了隐藏字符,看看 rows.keys.first.chars.to_a 吧。

一个可能是因为表格数据加了 BOM

data = Hash.[] CSV.parse("\xEF\xBB\xBFname\nfoo").transpose
# => {"name"=>"foo"}
data['name']
# => nil

为什么会加 BOM 呢?大概是因为要让 excel 能打开 utf-8 编码文件 http://ruby-china.org/topics/16376 ...

#14 楼 @luikore 恩 看到了 是由隐藏字符,但是却是个空字符

有意思

#14 楼 @luikore 居然还能这样。。

#15 楼 @dothide 是无 glyph 的字符,你可以看它的 code point: row.keys[0].chars.map &:ord 或者看二进制 inspect: row.keys[0].force_encoding 'binary'

#18 楼 @luikore 解决了,我把原来的 csv 文件格式转为无 BOM 编码格式再重新导入即可

#14 楼 @luikore p rows.keys.first.b 应该也能看到吧?

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