[Vienna-pm] locales, umlaute, sortierung ...

Klaus Ita klaus at worstofall.com
Tue Nov 9 02:48:23 PST 2010


man, use utf8

2010/11/9 peter pilsl <pilsl at goldfisch.at>:
>
> hallo,
>
> tja ... irgendwie dachte ich dass diese Probleme jahrelang hinter mir liegen ... aber nun steh ich wieder dort:
>
> ich schaffs nicht, eine liste von wörtern lexigraphisch korrekt zu sortieren.
>
> ----------------------
> #!/usr/bin/perl -w
>
> use strict;
> use locale;
> use POSIX qw(locale_h);
> setlocale(LC_ALL, "de_AT.UTF-8");
>
> my @l;
> @l=qw(ampel ampele ösen zöse ampez ampex);
> push(@l,"ampel vorrang","öse nöse","Öse nöse","ampe wampe"," sowas");
>
> @l=map {lc($_)} @l;
>
> @l=sort {$a cmp $b} @l;
>
> print join("\n", at l),"\n";
> --------------------------
>
>
> mein ergebnis:
>
> ampel
> ampele
> ampel vorrang
> ampe wampe
> ampex
> ampez
> ösen
> öse nöse
> Öse nöse
>  sowas
> zöse
>
> das ist offensichtlich falsch. Erstens wird das grosse "Ö" nicht kleingemacht und zweitens sollte das leerzeichen noch vor dem a kommen und nicht irgendwo zwischen l und x  :)
>
> locales sind immer schwierig. Aber ich glaub ich hab alles richtig gemacht. die locales sind auf den test-systemen installiert  (prüfen mit "locale -a", erzeugen mit locale-gen) und auch die environment-variablen LANG,LC_ALL,LC_COLLATE,LC_CTYPE sind richtig gesetzt obwohl das glaub ich ned nötig ist, weil ich eh die POSIX-locales im script nehm.
>
> getestet hab ich das auf insgesamt vier Rechnern. zwei mit perl 5.8.8 und zwei mit perl 5.10.1   (alles ubuntu: 8.04, 9.04, 10.04 u 10.10)
>
> ich hab auch alle möglichen utf8::encode und utf8::decode und das umwandeln auf latin1 vor dem sortieren und rückwandeln auf utf8 nachher probiert. hat alles ned funktioniert.
>
> was überseh ich? kann das wer auf einem anderen system als ubuntu testen? danke & danke für tips,
> peter
>
>
>
> _______________________________________________
> Vienna-pm mailing list
> Vienna-pm at pm.org
> http://mail.pm.org/mailman/listinfo/vienna-pm


More information about the Vienna-pm mailing list