[ruby-core:62853] [ruby-trunk - Bug #9883] [Closed] Different behaviour between `==` and hash key lookup regarding multibyte character fragment

From: nobu@...
Date: 2014-05-30 06:30:58 UTC
List: ruby-core #62853
Issue #9883 has been updated by Nobuyoshi Nakada.

Description updated
Status changed from Open to Closed

----------------------------------------
Bug #9883: Different behaviour between `=3D=3D` and hash key lookup regardi=
ng multibyte character fragment
https://bugs.ruby-lang.org/issues/9883#change-46972

* Author: Tsuyoshi Sawada
* Status: Closed
* Priority: Normal
* Assignee:=20
* Category:=20
* Target version:=20
* ruby -v: 2.1
* Backport:=20
----------------------------------------
This question is reported in stackoverflow (http://stackoverflow.com/questi=
ons/23946127). When a multibyte character is split by `slice`, `=3D=3D` ign=
ores the split fragment of the character, while key lookup on hash does not:

~~~ruby
s1 =3D "=E2=80=99xxxxxxxxxxxxxxxxxxxxxxxx".slice(1, 24)
s2 =3D "xxxxxxxxxxxxxxxxxxxxxxxx"

s1 =3D=3D s2          # =3D> true
{s2=3D>""}.key?(s1) # =3D> false
~~~
This is inconsistent, and I believe either of the above two is a bug. If it=
 is not a bug, but intended, then it is misleading, and I propose the featu=
re should be changed.




--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next