in reply to Unicode combining characters as hash keys?
Hashes have no problem with combining marks.
$ perl -MData::Dumper -E' $Data::Dumper::Useqq = 1; $_ = "e\x{301}"; $h{$_} = 1; say $h{$_} || 0; ' 1
The problem is probably that the character appears both in composed and decomposed form.
$ perl -E' $Data::Dumper::Useqq = 1; $a = "e\x{301}"; $b = "\xE9"; $h{$a} = 1; say $h{$b} || 0; ' 0
You can use Unicode::Normalize's NFC or NFD to normalize the form. (Doesn't matter which, as long as you're consistent.)
$ perl -MUnicode::Normalize=NFC -E' $Data::Dumper::Useqq = 1; $a = NFC("e\x{301}"); $b = NFC("\xE9"); $h{$a} = 1; say $h{$b} || 0; ' 1
I'm kinda guessing here since you used 20 lines of code to describe a problem that could be described with 2.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Unicode combining characters as hash keys?
by Anonymous Monk on Sep 03, 2011 at 08:11 UTC | |
by ikegami (Patriarch) on Sep 05, 2011 at 06:58 UTC | |
by Jim (Curate) on Sep 03, 2011 at 21:52 UTC |