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

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

Duplicates Bug #9882: Issue with hash string keys added

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

* Author: Tsuyoshi Sawada
* Status: Open
* 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:

    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