hotti: UTF-8 dekodieren (?)

Beitrag lesen

hi,

aus meiner Praxis mal ein bischen geplaudert: Mit kodierten Zeichenketten, egal ob utf-8 oder iso-8859-1, musst Du nur 'arbeiten' wenn Stringfunktionen wie substr(), index(), lc(), uc() usw. zum Einsatz kommen.

Selbst wenn MySQL im Spiel ist, kannst Du da Oktetten (!= Zeichenketten) hinschicken, alleine das Attribut { mysql_enable_utf8 => 1 } regelt die zeichenorientierte Kommunikation, allerdings musst Du beachten, dass das was der DB-Driver zurückliefert dann utf-8-kodierte Zeichenketten sind. Im Fall von Anwendungen mit DB-Anbindung wirst Du ohnehin die String-Funktionen der DB-Engine überlassen (i.d.R.).

Perl-intern kannst Du, bis auf o.g. Stringfunktionen fast alles byteorientiert erledigen, und alles was IO (FileHandle, STDOUT, Sockets) betrifft, sind Bewegungen von Bytes, kodierte Zeichenketten sind da völlig deplatziert.

Verzichte auch beim CGI-Modul auf das -utf8 Flag und flagge die empfangenen Oktetten erst dann mit dem entsprechenden Encoding, wenn das tatsächlich gebraucht wird. Dann verlierst Du auch nicht die Übersicht.

Und überhaupt: Bis Perl v5.8 (Encode.pm) war ein
uc('iso-8859-1: ä');
gar nicht möglich.

Hotti