为什么我不能从哈希中读取值?

考虑以下代码:

hash = {"a"=>["B", "C"], "b"=>["C"], "c"=>["D", "E"], "d"=>["F"]} puts hash["a"] 

这只是打印什么。

 puts hash["a"].class 

这打印出NilClass

以下ruby版本中是否存在某种已知错误?

ruby 2.0.0p247(2013-06-27修订版41674)[universal.x86_64-darwin13]

我希望有人可以帮助我,这让我发疯。 我的IDE是JetBrains的RubyMine。 我也尝试通过IRB直接运行它。

谢谢

PS。 操作系统是OSX

通过复制代码并将其粘贴到我的控制台中,我可以重现您的问题。

然后我拿了你的哈希并做了以下事情:

 hash.first.first # => "a" hash.first.first.length # => 2 

看来你的"a"有一个不可打印的第一个字符。 删除它,你会没事的。

而你char是什么是这个炭? 65279” :

 hash.first.first[0].ord # => 65279 

您的"a"键有一个BOM (字节顺序标记)作为第一个字符。 您需要使用适当的编码打开文件。 猜测我会说你正在使用UTF-16LE。

 File.open('foo', 'rb:BOM|UTF-16LE') do |fi| ... end 

有关更多信息,请参阅http://www.ruby-doc.org/core-2.1.1/IO.html#method-c-new-label-IO+Encoding 。