使用 csv 模块读取 csv 格式的 utf-8 文本,类似于这样的:
xiaoli,小李,经理,男
xiaowang,小王,助理,女
data=CSV.read('data.txt') 读取
而后将其转成 people[:xiaoli] 形式的 hash 表,奇怪的事情发生了:
转的时候用的是 data[0][0].to_sym 作为 hash 的符号索引,读取的时候直接输入 people['xiaoli'.to_sym] 的时候发生如下错误:
in get_name': undefined method
[]' for nil:NilClass (NoMethodError)
意味着'xiaoli'.to_sym 不等于 data[0][0].to_sym,直接测试
'xiaoli'.to_sym == data[0][0].to_sym 输出 false。。。。。。
从 data 中再读取使用 people[data[0][0].to_sym] 没有问题
此问题只在 windows 中发生,最诡异的是,只有第一行数据会发生这个错误,以后的数据都不会。如果将其他行的数据 copy 到第一行,那么新 copy 到第一行的数据发生这个错误,旧的第一行错误消失。。。。。。
直接新建文档手工写入数据保存成 utf-8 文件错误同样。
真是愁坏了,不知道有没有谁遇到过的?请多多指教,万分感谢。