Project

General

Profile

Actions

Bug #1192

closed

encoding problem with tr() and hash keys 1.9.1

Added by do1 (Do One) over 15 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
Backport:
[ruby-core:22326]

Description

=begin
In utf-8 environment I do:

irb(main):121:0> h = {"a" => 1, "\u0101" => 2}
=> {"a"=>1, "ā"=>2}
irb(main):122:0> h.key? "a".tr("z", "\u0101")
=> false <--- wrong!
irb(main):123:0> h.key? "\u0101".tr("z", "\u0101")
=> true

So after I change utf-8 string without extended chars in it with tr(),
where second character set is having extended chars, new string is not
found in hash.

Both strings are same in Marshal encoding:

irb(main):124:0> Marshal.dump "a".tr("\u0101", "\u0101")
=> "\x04\bI"\x06a\x06:\rencoding"\nUTF-8"
irb(main):126:0> Marshal.dump "a"
=> "\x04\bI"\x06a\x06:\rencoding"\nUTF-8"
=end

Actions #1

Updated by nobu (Nobuyoshi Nakada) over 15 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r22525.
=end

Actions #2

Updated by mame (Yusuke Endoh) over 15 years ago

  • Category set to M17N
  • Status changed from Closed to Open
  • Assignee set to naruse (Yui NARUSE)

=begin
Hi,

The fix in r22525 seems to be incomplete:

$ ruby19 -ve 'p ["a".hash, "a".tr("a", "\u0101").tr("\u0101", "a").hash]'
ruby 1.9.2dev (2009-02-22 trunk 22527) [i686-linux]
[903321233, 903321232]

--
Yusuke ENDOH
=end

Actions #3

Updated by nobu (Nobuyoshi Nakada) over 15 years ago

  • Status changed from Open to Closed

=begin
Applied in changeset r22547.
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0