Perl Expressions und UTF-8

Stringoperationen funktionieren mit utf-8-kodierten Zeichenketten

Perl Expressions arbeiten auch mit UTF-8-kodierten Zeichenketten. Sofern diese denn auch UTF-8-kodiert sind. Also nimm da nicht die Bytes sondern utf-8-kodierte Zeichenketten. Zwischen diesen beiden Dingen vermittelt Encode::encode(); Wir schauen uns ein Beispiel an:

use Encode qw(encode decode);

# Oktetten, Bytes
my $octs = 'Fünf';
my $comp = 'Ü';

# nothing
print $octs =~ /$comp/i;

Die print()-Ausgabe ist leer, weil Perlintern verschiedene Oktetten vorliegen. Nun jedoch nehmen wir die Rohdaten von eben und deklarieren die UTF-8-Kodierung. Jetzt funktioniert auch der Vergleich Case-insensitive:

my $chars = decode('UTF-8', $octs);
my $cc = decode('UTF-8', $comp);

# nunmehr matcht das 
print $chars =~ /$cc/i;

Die zu vergleichenden Strings müssen also alle beide UTF-8-kodiert vorliegen.


Die rein persönlichen Zwecken dienende Seite verwendet funktionsbedingt einen Session-Cookie. Datenschutzerklärung: Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. @: nmq​rstx-18­@yahoo.de