From: zverok.offline@... Date: 2021-07-26T06:24:19+00:00 Subject: [ruby-core:104678] [Ruby master Bug#18044] unusual behavior with Arabic string in a Hash Issue #18044 has been updated by zverok (Victor Shepelev). If I'll copy-paste your example literally, and then... ```ruby 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](https://www.compart.com/en/unicode/U+200E) 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: ```ruby foo = {"arabic" => "��������������������"} # => {"arabic"=>"��������������������"} foo["arabic"] # => "��������������������" ``` ---------------------------------------- Bug #18044: unusual behavior with Arabic string in a Hash https://bugs.ruby-lang.org/issues/18044#change-92993 * Author: 0xleaf (0x leaf) * Status: Open * Priority: Normal * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- 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 ```ruby 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] -- https://bugs.ruby-lang.org/ Unsubscribe: