Am Samstag, 2. September 2006 20:43 schrieb David Haller: Hallo David,
Irgendwas stimmt mit deiner Kodierung nicht, deine Mail ist als ISO-8859-15 deklariert, im Text steht '??ßÄ', vielleicht irgendwas komisches aus UTF-8...
Vielleicht liegt es an KMail, das wählt die Kodierung automatisch.
BTW: generell kann tr das weitgehend:
$ perl -e 'print join("", map { chr($_); } 160..255 ), "\n";' | tr '[[:lower:]]' '[[:upper:]]' ¡¢£?¥?§?©ª«¬®¯°±²³?µ¶·?¹º»???¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞÿ
~> cat /etc/issue Welcome to SUSE LINUX 10.0 (i586) - Kernel \r (\l). perl -v This is perl, v5.8.7 built for i586-linux-thread-multi glibc 2.3.5-40 ~> perl -e 'print join("", map { chr($_); } 160..255 ), "\n";' | tr '[[:lower:]]' '[[:upper:]]' ���������������������������� ~> cat /etc/issue Welcome to SUSE LINUX 10.1 (i586) - Kernel \r (\l). perl -v This is perl, v5.8.8 built for i586-linux-thread-multi # perl -e 'print join("", map { chr($_); } 160..255 ), "\n";' | tr '[[:lower:]]' '[[:upper:]]' ���������������������������� Also auch als root ändert sich (wie erwartet) nichts. ~$ cat /etc/issue Debian GNU/Linux testing/unstable \n \l perl -v This is perl, v5.8.8 built for i486-linux-gnu-thread-multi ~$ perl -e 'print join("", map { chr($_); } 160..255 ), "\n";' | tr '[[:lower:]]' '[[:upper:]]' ���������������������������� Auf allen 3 Rechnern (Suse 10.0, Suse 10.1, Debian Etch) kommt da also nichts brauchbares raus. Es ist mir aber auch nicht so wichtig, es war einfach mal eine Frage.
$ locale LANG=en_US.ISO_8859-15 LC_CTYPE="en_US.ISO_8859-15" LC_NUMERIC="en_US.ISO_8859-15" LC_TIME="en_US.ISO_8859-15" LC_COLLATE=POSIX LC_MONETARY="en_US.ISO_8859-15" LC_MESSAGES="en_US.ISO_8859-15" LC_ALL=
Es klappt also beim à (latin9:0xE0) bis þ (latin9:0xFE). Für den Rest fehlen in meiner Locale (wie gesagt glibc-2.1.3 [1]) wohl noch die Zuordnungen.
[1] /lib/libc.so.6 --version GNU C Library stable release version 2.1.3, by Roland McGrath et al. [..] Compiled on a Linux 2.2.14 system on 2000-03-24.
locale LANG=de_AT.UTF-8 LANGUAGE=de_AT:de_DE:de:en_GB:en LC_CTYPE="de_AT.UTF-8"
Versuch's mal auch mit ner anderen Locale.
echo "ICH MöCHTE GROßBUCHSTABEN IN WORTE WANDELN, ALSO ETWA MEIN HAUS IN MEIN HAUS, WOBEI DIES AUCH BEI ZB ÖÖ ODER ?? FUNKTIONIEREN SOLL. MIT TR BIN ICH DAZU NICHT WEITERGEKOMMEN." | perl -Mlocale -pe 's/\w+/\u\L$&/g' Ich MöChte GroßBuchstaben In Worte Wandeln, Also Etwa Mein Haus In Mein Haus, Wobei Dies Auch Bei Zb ÖÖ Oder ?? Funktionieren Soll. Mit Tr Bin Ich Dazu Nicht Weitergekommen.
Das sieht schon besser aus, da scheint nur die Worterkennung nicht zu klappen. Versuch's mal mit
| perl -Mutf8 -Mlocale -pe 's/\w+/\u\L$&/g'
echo "ICH MöCHTE GROßBUCHSTABEN IN WORTE WANDELN, ALSO ETWA MEIN HAUS IN MEIN HAUS, WOBEI DIES AUCH BEI ZB ÖÖ ODER ŠŠ FUNKTIONIEREN SOLL. MIT TR BIN ICH DAZU NICHT WEITERGEKOMMEN." | perl -Mutf8 -Mlocale -pe 's/\w+/\u\L$&/g' Ich MöChte GroßBuchstaben In Worte Wandeln, Also Etwa Mein Haus In Mein Haus, Wobei Dies Auch Bei Zb ÖÖ Oder ŠŠ Funktionieren Soll. Mit Tr Bin Ich Dazu Nicht Weitergekommen.
oder so. Bei mir klappt das obige:
$ echo "ICH MöCHTE GROßBUCHSTABEN IN WORTE WANDELN, ALSO ETW MEIN HAUS IN MEIN HAUS, WOBEI DIES AUCH BEI ZB ÖÖ ODER ?? åÅ éÉ àÀ FUNKTIONIEREN SOLL. MIT TR BIN ICH DAZU NICHT WEITERGEKOMMEN." | perl -Mlocale -pe 's/\w+/\u\L$&/g' Ich Möchte Großbuchstaben In Worte Wandeln, Also Etwa Mein Haus In Mein ^^ ^^ Haus, Wobei Dies Auch Bei Zb Öö Oder ?? Åå Éé Àà Funktionieren Soll. Mit Tr Bin Ich Dazu Nicht Weitergekommen.
$ perl -e 'print join("", map{chr($_).uc(chr($_))." ";} 160..255),"\n";' \
| perl -Mlocale -pe 's/\w+/\u\L$&/g'
¡¡ ¢¢ ££ ?? ¥¥ ?? §§ ?? ©© ªª «« ¬¬ ®® ¯¯ °° ±± ²² ³³ ?? µµ ¶¶ ·· ?? ¹¹ ºº »» ?? ?? ?? ¿¿ Àà Áá Ââ Ãã Ää Åå Ææ Çç Èè Éé Êê Ëë Ìì Íí Îî Ïï Ðð Ññ Òò Óó Ôô Õõ Öö ×× Øø Ùù Úú Ûû Üü Ýý Þþ ßß Àà Áá Ââ Ãã Ää Åå Ææ Çç Èè Éé Êê Ëë Ìì Íí Îî Ïï Ðð Ññ Òò Óó Ôô Õõ Öö ÷÷ Øø Ùù Úú Ûû Üü Ýý Þþ ÿÿ
[Umbruch von mir nachträglich]
perl -e 'print join("", map{chr($_).uc(chr($_))." ";} 160..255),"\n";' | perl -Mlocale -pe 's/\w+/\u\L$&/g' � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
Da scheint's das gleiche wie beim tr zu sein. Perl übrigens wegen der Worterkennung. Mit tr, sed und awk wird es häßlich.
Ich würde meinen, die übliche Problmatik, die ich seit langer Zeit kenne. Sieh dir mal "MöChte" an oder "Bei Zb ÖÖ Oder ??". Das ist leider nicht brauchbar, da kann ich gleich selber etwas mit individuellen Ausnahmen basteln, wie ich es schon jetzt habe. Auf Dauer werden es jedoch immer mehr Ausnahmen, die ich mit sed verarbeite.
Die kannst du auch in perl erledingen. Welche Perl-Version verwendest du? Und die Ausgabe von: perl -Mutf8 -e 'print "$utf8::VERSION\n";'?
perl -Mutf8 -e 'print "$utf8::VERSION\n";' 1.05 perl -Mutf8 -e 'print "$utf8::VERSION\n";' 1.06 Al