[ruby-core:123640] [Ruby Bug#21559] Unicode normalization nfd -> nfc -> nfd is not reversible
From:
duerst via ruby-core <ruby-core@...>
Date:
2025-11-02 02:10:50 UTC
List:
ruby-core #123640
Issue #21559 has been updated by duerst (Martin D=FCrst).
Backport changed from 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN to 3.2: DONT=
NEED, 3.3: DONTNEED, 3.4: DONTNEED
Backport would only be needed if the upgrade to Unicode 16.0.0 (see https:/=
/bugs.ruby-lang.org/issues/20724) is backported.
----------------------------------------
Bug #21559: Unicode normalization nfd -> nfc -> nfd is not reversible
https://bugs.ruby-lang.org/issues/21559#change-115024
* Author: tompng (tomoya ishida)
* Status: Closed
* Assignee: duerst (Martin D=FCrst)
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONTNEED
----------------------------------------
I expect `nfd(nfc(str)) =3D=3D nfd(str)` but found a string that doesn't.
~~~ruby
# Ruby 3.1 - 3.5
str =3D "s\u{11930}\u{323}\u{11930}\u{307}"
p str.unicode_normalize(:nfd) =3D=3D str.unicode_normalize(:nfc).unicode_no=
rmalize(:nfd)
#=3D> false
~~~
~~~ruby
# ruby 3.5.0dev
str =3D "s\u{1611e}\u{323}\u{1611e}\u{307}\u{1611f}"
p str.unicode_normalize(:nfd) =3D=3D str.unicode_normalize(:nfc).unicode_no=
rmalize(:nfd)
#=3D> false
~~~
--=20
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.rub=
y-lang.org/