[Vienna-pm] utf8 string als hash-key
Josef
e9427749 at stud4.tuwien.ac.at
Mon Sep 21 06:34:16 PDT 2009
Hi, allerseits!
max schrieb:
> keine schleche idee!, aber Wolfgang Laun hat mir grad eben schon den
> entscheidenden tip gegeben. naemlich
Nun ja, da hättest Du auch mein Posting lesen können. ;-/
(Latin1 wäre wichtig gewesen, wenn die andere Lib selber auf Werte
mit bestimmten Schlüsseln zugreift. Diesbezügl. hattest Du Dich
noch nicht geäußert gehabt. UTF-8 hat den Vorteil das alle Zeichen
drin Platz haben.)
Zu Deinem Ausgangspunkt noch ein paar Fragen.
Was tut:
%hash=map { utf8::upgrade(my $k=$_); $k => $hash{$_} } keys %hash;
$rdb->mget(\%hash); # Verliert utf8-Flag
%hash=map { _utf8_on(my $k=$_); $k => $hash{$_0} } keys %hash;
Und was tut:
%hash=map { encode('iso-8859-1',$_) => $hash{$_} } keys %hash;
# ^- nur Latin1, kein Flag
$rdb->mget(\%hash);
# solange nur latin1-Zeichen sollte es passen.
Und drittens:
Falls deine Lib reines Perl ist, schau ob dort irgendwo
"use bytes;" steht und kommentier das mal testweise aus.
Vielleicht erübrigt sich dann Dein Workaround, um den
Workaround der Bibl. für ältere Perls.
Noch ein paar Fragen:
- Taintmode?
- PERL_UNICODE Umgebungsvariable?
- Insbesondere Unterschiede zw. den Systemen?
ciao,
Josef
PS: utf8::upgrade($_) for keys %hash;
geht für values aber nicht für keys.
More information about the Vienna-pm
mailing list