Actions
Bug #18044
closedunusual behavior with Arabic string in a Hash
Description
Hey all,
I found a potential bug where looking up a key that contains an arabic string always returns "nil" instead of the string. To reproduce, run the following script
foo = {"arabic" => "ٱلتَّوْبَة"}
p foo.keys # => ["arabic"]
p foo["arabic"] # => nil
p foo.values_at("arabic") => [nil]
foo.fetch "arabic" # Raises error with - did you mean "arabic" ?
Tested on:
- ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-linux]
- ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]
Updated by zverok (Victor Shepelev) over 3 years ago
If I'll copy-paste your example literally, and then...
foo.keys.first.chars
# => ["a", "r", "a", "b", "i", "c", ""]
foo.keys.first.chars.last.unpack('U') # => 8206
8206.to_s(16) # => 200e
It is U200e LTR mark character.
I assume it was introduced on code editing, not on hash storing, because if I'll try to edit your example (remove key and then re-enter it manually), everything works:
foo = {"arabic" => "ٱلتَّوْبَة"}
# => {"arabic"=>"ٱلتَّوْبَة"}
foo["arabic"]
# => "ٱلتَّوْبَة"
Updated by 0xleaf (0x leaf) over 3 years ago
Thanks ! Indeed removing that invisible character fixes the issue. I wonder if this error could be made more obvious?
Updated by jeremyevans0 (Jeremy Evans) over 3 years ago
- Status changed from Open to Closed
Actions
Like0
Like0Like0Like0