Hallo Bernhard, hallo Leute, Am Mittwoch, 30. Juli 2003 21:07 schrieb Bernhard Walle:
ich bin zur Zeit dabei, Muttprint utf-8 tauglich zu machen. Mittlerweile bereue ich es fast schon, aber naja.
Jedenfalls bin ich dabei auf folgendes gestoßen, meiner Meinung nach eindeutig ein Bug in Perl. Tritt unter SuSE 8.1 mit Perl 5.8.0 auf. Unter Debian mit Perl 5.6.1 ist natürlich alles anders, aber daran habe ich mich schon gewöhnt.
;-)
#!/usr/bin/perl use POSIX; $str = POSIX::strftime( "%A, %B %d, %Y", 0, 0, 0, 12, 2, 95, 2 ); print "$str\n"; __END__
[~] $ perl -v
This is perl, v5.8.0 built for i586-linux-thread-multi
Dieselbe Version (mit dem gleichen Bug) ist bei SuSE 8.2 auch dabei.
[~] $ locale LANG=de_DE.utf-8 [...] [~] $ perl test.pl Dienstag, MÀrz 12, 1995
[~] $ perl test.pl | recode utf-8..latin1 Dienstag, MÀrz 12, 1995
[~] $ perl test.pl | recode utf-8..latin1 | recode utf-8..latin1 Dienstag, März 12, 1995
Gleiches Ergebnis unter SuSE 8.2
Es scheint also als wäre der String "doppelt" utf-8 kodiert!
Ja :-( Bei den Fontlingen plagt sich Ratti gerade mit einem ähnlichen Problem rum. Mit "use bytes; no utf8;" hat er schon die Fehlermeldungen losbekommen [1], aber die Ausgabe bringt immer noch die uft8-Doppelbytes (aber immerhin nur einmal codiert ;-) Falls Du eine Lösung findest, lass es mich wissen ;-) Gruß Christian Boltz [1] die kamen übrigens daher, dass Binärdaten (!) in einer RegEx verarbeitet werden und Perl dann "halbe" utf8-Bytes gemeldet hat ;-) -- Eight Megabytes Always Continuously Swapping ;-) [Paketbeschreibung für emacs in SuSE 8.2]